Ticket #2341: fileFilters-design.patch

File fileFilters-design.patch, 57.4 KB (added by pap, 15 years ago)

Design related code

  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/imports/ResourceImportManager.java

    ### Eclipse Workspace Patch 1.0
    #P sophie
     
    77import java.util.List; 
    88import java.util.Map; 
    99 
    10 import javax.swing.filechooser.FileFilter; 
    11  
    1210import org.sophie2.base.commons.util.ImmList; 
    1311import org.sophie2.base.commons.util.position.ImmPoint; 
    1412import org.sophie2.base.commons.util.position.ImmSize; 
     
    4745public abstract class ResourceImportManager<D> { 
    4846 
    4947        /** 
    50          * File filter used when user imports multiple resources from the file 
    51          * system. 
    52          */ 
    53         public static final FileFilter ALL_RESOURCE_FILTER = null; 
    54  
    55         /** 
    5648         * Retrieves the import role of this <code>ResourceImportManager</code>. 
    5749         *  
    5850         * @return The import role of the manager. 
     
    124116        protected FileContainer getFilesContainer(ResourceImportProvider provider, 
    125117                        ResourceH parentResource) { 
    126118                FileDialogInput input = new FileDialogInput(null,  
    127                                 "Import resource", provider.getFileFilter(), 
    128                                  "", FileDialogInput.Kind.OPEN, true, getFileAccessory(parentResource)); 
     119                                "Import resource", "", 
     120                                 FileDialogInput.Kind.OPEN, true, getFileAccessory(parentResource), provider.getFilterInfo()); 
    129121 
    130122                return DialogManager.get().showDialog(input); 
    131123        } 
  • modules/org.sophie2.main.func.text/src/main/java/org/sophie2/main/func/text/rtf/RtfModule.java

     
    66import org.sophie2.core.modularity.SophieExtension; 
    77import org.sophie2.core.modularity.SophieExtensionPoint; 
    88import org.sophie2.core.modularity.SophieModule; 
     9import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    910import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
    1011 
    1112/** 
     
    2526                AutoVisualProvider.fillExtensions(res, InsertRtfItem.class); 
    2627                 
    2728                SimpleResourceImportProvider.register(res, new RtfTextImportManager(), 
    28                                 RtfTextImportManager.FILE_FILTER); 
     29                                new FileFilterInfo(RtfTextImportManager.FILE_FILTER)); 
    2930        } 
    3031} 
  • modules/org.sophie2.main.func.resources/src/test/java/org/sophie2/main/func/resources/imports/bindata/BinDataChooserDemo.java

     
    1717import org.sophie2.main.dialogs.input.FileExtensionFilter; 
    1818import org.sophie2.main.dialogs.input.MessageDialogInput; 
    1919import org.sophie2.main.dialogs.input.FileDialogInput.FileContainer; 
     20import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2021import org.sophie2.main.dialogs.input.FileDialogInput.Kind; 
    2122import org.sophie2.main.func.file.FileFunctionalityModule; 
    2223import org.sophie2.main.func.resources.MainFuncResourcesModule; 
     
    4950                                                MainAppModule.class,  
    5051                                                MainFuncResourcesModule.class, 
    5152                                                FileFunctionalityModule.class); 
    52                                  
    5353                        } 
    5454                }); 
    5555 
     
    5757                        new FileExtensionFilter("Audio (*.mp3, *.mpg)", "mp3", "mpg"); 
    5858                 
    5959                final FileDialogInput input = new FileDialogInput(null, "Import data",  
    60                                 filter, "", Kind.OPEN, true,  
    61                                 new BinDataChooser(filter)); 
     60                                "", Kind.OPEN, true, new BinDataChooser(filter),  
     61                                new FileFilterInfo(filter)); 
    6262 
    6363                SwingUtilities.invokeLater(new Runnable() { 
    6464                        public void run() { 
  • modules/org.sophie2.main.func.resources/src/test/java/org/sophie2/main/func/resources/imports/ResourceImportUtilTest.java

     
    3838import org.sophie2.main.app.commons.testing.AppTestBase; 
    3939import org.sophie2.main.dialogs.input.FileDialogInput; 
    4040import org.sophie2.main.dialogs.input.FileDialogInput.FileContainer; 
     41import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4142import org.sophie2.main.func.file.FileFunctionalityModule; 
    4243import org.sophie2.main.func.resources.dummy.ColdTextData; 
    4344import org.sophie2.main.func.resources.dummy.ColdTextFrame; 
     
    126127                 
    127128                this.provider = new SimpleResourceImportProvider( 
    128129                                new ColdTextImportManager(),  
    129                                 ColdTextImportManager.FILE_FILTER); 
     130                                new FileFilterInfo(ColdTextImportManager.FILE_FILTER)); 
    130131        } 
    131132         
    132133        private void testOneText(ResourceAccess bookAccess, File resFile, 
  • modules/org.sophie2.main.func.help/src/main/java/org/sophie2/main/func/help/bugreport/BugReportLogic.java

     
    3737import org.sophie2.main.dialogs.input.FileDialogInput; 
    3838import org.sophie2.main.dialogs.input.FileExtensionFilter; 
    3939import org.sophie2.main.dialogs.input.MessageDialogInput; 
     40import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4041import org.sophie2.main.dialogs.input.FileDialogInput.Kind; 
    4142import org.sophie2.main.func.help.bugreport.BugReportDialog.AttachFileButton; 
    4243import org.sophie2.main.func.help.bugreport.BugReportDialog.CancelBugReportButton; 
     
    8990 
    9091                        FileFilter txtFilter = new FileExtensionFilter("TXT file", "txt");  
    9192                        FileDialogInput input = new FileDialogInput(  
    92                                         bugReportForm.swingComponent().get(), "Save", txtFilter, FileDialogInput.Kind.SAVE);  
     93                                        bugReportForm.swingComponent().get(), "Save", FileDialogInput.Kind.SAVE, new FileFilterInfo(txtFilter));  
    9394                        File file = DialogManager.get().showDialog(input).getSelectedFile(); 
    9495                        if (file != null) { 
    9596                                file = FileDialogInput.appendFileExtension(file, txtFilter); 
     
    178179                        BugReportDialog bugReportForm = event.getContext(BugReportDialog.class); 
    179180 
    180181                        FileDialogInput input =  
    181                                 new FileDialogInput(bugReportForm.swingComponent().get(), null, Kind.OPEN);  
     182                                new FileDialogInput(bugReportForm.swingComponent().get(), Kind.OPEN, new FileFilterInfo());  
    182183                        File file = DialogManager.get().showDialog(input).getSelectedFile(); 
    183184 
    184185                        long maxSize = ConfigurationManager.get().getValue(BugReportDialog.MAX_ATTACHMENT_SIZE); 
  • modules/org.sophie2.main.func.resources/src/test/java/org/sophie2/main/func/resources/imports/ResourceImportManagerTest.java

     
    3737import org.sophie2.main.dialogs.input.FileDialogInput; 
    3838import org.sophie2.main.dialogs.input.MessageDialogInput; 
    3939import org.sophie2.main.dialogs.input.FileDialogInput.FileContainer; 
     40import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4041import org.sophie2.main.func.file.FileFunctionalityModule; 
    4142import org.sophie2.main.func.resources.dummy.ColdTextImportManager; 
    4243import org.sophie2.main.func.resources.dummy.ColdTextModule; 
     
    7879                 
    7980                this.provider = new SimpleResourceImportProvider( 
    8081                                new ColdTextImportManager(),  
    81                                 ColdTextImportManager.FILE_FILTER); 
     82                                new FileFilterInfo(ColdTextImportManager.FILE_FILTER)); 
    8283        } 
    8384         
    8485        /** 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/logic/ResourceDeleteLogic.java

     
    1919import org.sophie2.main.app.commons.book.BookView; 
    2020import org.sophie2.main.app.commons.element.ElementView; 
    2121import org.sophie2.main.app.commons.page.RootPageView; 
     22import org.sophie2.main.app.commons.util.AppViewUtil; 
    2223import org.sophie2.main.dialogs.input.ConfirmDialogInput; 
    2324import org.sophie2.main.dialogs.input.DialogUtils; 
    2425import org.sophie2.main.func.resources.view.ResourceDetailsPalette; 
     
    4950 
    5051                        assert palette != null : "The source must not be null!"; 
    5152 
    52                         BookDocView bookDocView = palette.findNearestElement(null, BookDocView.class); 
     53                        BookDocView bookDocView = AppViewUtil.getCurrentBookDocView(palette); 
    5354                        ListPaletteItem selectedItem =  
    5455                                palette.resourcePalette().get().firstSelectedItem().get(); 
    5556 
  • modules/org.sophie2.main.func.media/src/main/java/org/sophie2/main/func/media/MainFuncMediaModule.java

     
    2121import org.sophie2.core.mvc.SimpleOperation; 
    2222import org.sophie2.main.app.commons.util.SimpleResourceViewProvider; 
    2323import org.sophie2.main.app.menus.insert.InsertMenu; 
     24import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2425import org.sophie2.main.dnd.providers.ResourceDataProvider; 
    2526import org.sophie2.main.func.media.dnd.MediaResourceDataProvider; 
    2627import org.sophie2.main.func.media.links.MediaActionLogic; 
     
    124125                InsertMenu.class, "insert-menu-item", "66-insert-audio-record-item")); 
    125126         
    126127                SimpleResourceImportProvider.register(res, 
    127                                 new AudioImportManager(), AudioImportManager.FILE_FILTER); 
     128                                new AudioImportManager(), new FileFilterInfo(AudioImportManager.FILE_FILTER)); 
    128129                SimpleResourceImportProvider.register(res, 
    129130                                new AudioRecordImportManager(), null); 
    130131                SimpleResourceImportProvider.register(res, 
    131                                 new VideoImportManager(), VideoImportManager.FILE_FILTER); 
     132                                new VideoImportManager(), new FileFilterInfo(VideoImportManager.FILE_FILTER)); 
    132133         
    133134                SimpleResourceViewProvider.register(res, VisualElement.class, 
    134135                                AudioContentView.class, AudioFrameR4.KIND, 
  • modules/org.sophie2.extra.func.plain/src/main/java/org/sophie2/extra/func/plain/PlainTextModule.java

     
    77import org.sophie2.core.modularity.SophieExtensionPoint; 
    88import org.sophie2.core.modularity.SophieModule; 
    99import org.sophie2.core.mvc.SimpleOperation; 
     10import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    1011import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
    1112 
    1213/** 
     
    2728                AutoVisualProvider.fillExtensions(res, InsertPlainTextItem.class); 
    2829                 
    2930                SimpleResourceImportProvider.register(res, 
    30                                 new PlainTextImportManager(), PlainTextImportManager.FILE_FILTER); 
     31                                new PlainTextImportManager(), new FileFilterInfo(PlainTextImportManager.FILE_FILTER)); 
    3132        } 
    3233} 
  • modules/org.sophie2.main.func.file/src/test/java/org/sophie2/main/func/file/dialogs/FileDialogAccessoryDemo.java

     
    2424import org.sophie2.main.dialogs.input.FileDialogInput.AccessoryData; 
    2525import org.sophie2.main.dialogs.input.FileDialogInput.FileAccessory; 
    2626import org.sophie2.main.dialogs.input.FileDialogInput.FileContainer; 
     27import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2728import org.sophie2.main.dialogs.input.FileDialogInput.Kind; 
    2829import org.sophie2.main.func.file.FileFunctionalityModule; 
    2930 
     
    154155                }); 
    155156                 
    156157                final FileDialogInput input = new FileDialogInput(null, "Open",  
    157                                 FileDialogInput.BOOK_FILTER, "", Kind.OPEN, true, new DemoAccessory()); 
     158                                "", Kind.OPEN, false, new DemoAccessory(), new FileFilterInfo(FileDialogInput.BOOK_FILTER)); 
    158159                 
    159160                SwingUtilities.invokeLater(new Runnable() { 
    160161                        public void run() { 
  • modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/util/SaveDocUtil.java

     
    1414import org.sophie2.main.app.commons.book.BookDocView; 
    1515import org.sophie2.main.dialogs.input.DialogUtils; 
    1616import org.sophie2.main.dialogs.input.FileDialogInput; 
     17import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    1718import org.sophie2.main.dialogs.input.FileDialogInput.Kind; 
    1819 
    1920/** 
     
    8182 
    8283                FileDialogInput fdi =  
    8384                        new FileDialogInput(bookDocView.swingComponent().get(), dialogKind.getTitle(), 
    84                                 FileDialogInput.BOOK_FILTER, fileName, dialogKind, false, null); 
     85                                fileName, dialogKind, false, null, new FileFilterInfo(FileDialogInput.BOOK_FILTER)); 
    8586                File file = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    8687                if (file == null) { 
    8788                        return false; 
  • modules/org.sophie2.extra.func.pdf/src/main/java/org/sophie2/extra/func/pdf/PdfModule.java

     
    2828import org.sophie2.extra.func.pdf.view.PdfResourcePreviewProvider.PdfFilteringButton; 
    2929import org.sophie2.main.app.commons.util.SimpleResourceViewProvider; 
    3030import org.sophie2.main.app.menus.insert.InsertMenu; 
     31import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    3132import org.sophie2.main.dnd.providers.ResourceDataProvider; 
    3233import org.sophie2.main.func.resources.ResourcePreviewProvider; 
    3334import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
     
    7576                                "insert-menu-item", "77-insert-pdf-item")); 
    7677 
    7778                SimpleResourceImportProvider.register(res, new PdfImportManager(), 
    78                                 PdfImportManager.FILE_FILTER); 
     79                                new FileFilterInfo(PdfImportManager.FILE_FILTER)); 
    7980 
    8081                SimpleResourceViewProvider.register(res, VisualElement.class, PdfContentView.class, 
    8182                                PdfFrameR4.KIND, "kkk-pdf-content-view"); 
  • modules/org.sophie2.main.func.text/src/main/java/org/sophie2/main/func/text/TextFuncModule.java

     
    1717import org.sophie2.core.modularity.SophieModule; 
    1818import org.sophie2.core.mvc.SimpleOperation; 
    1919import org.sophie2.main.app.commons.util.SimpleResourceViewProvider; 
     20import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2021import org.sophie2.main.dnd.providers.ResourceDataProvider; 
    2122import org.sophie2.main.func.resources.ResourcePreviewProvider; 
    2223import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
     
    7778                // Import managers 
    7879                SimpleResourceImportProvider.register(res, new NewTextImportManager(), null); 
    7980                SimpleResourceImportProvider.register(res, new RtfTextImportManager(), 
    80                                 RtfTextImportManager.FILE_FILTER); 
     81                                new FileFilterInfo(RtfTextImportManager.FILE_FILTER)); 
    8182                 
    8283                // Resources 
    8384                ResourceR4.registerAsExtension(res, HeadTextFrameR4.class); 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/logic/ResourceChooserLogic.java

     
    11package org.sophie2.main.func.resources.logic; 
    22 
    3 import java.util.Arrays; 
    4 import java.util.LinkedList; 
    53import java.util.List; 
    64 
    75import javax.swing.SwingUtilities; 
    8 import javax.swing.filechooser.FileFilter; 
    96 
    107import org.sophie2.base.bound.BoundControl; 
    118import org.sophie2.base.bound.ComboInput; 
     
    1613import org.sophie2.core.mvc.LogicR3; 
    1714import org.sophie2.core.mvc.OperationDef; 
    1815import org.sophie2.core.mvc.events.EventR3; 
    19 import org.sophie2.main.dialogs.input.FileExtensionFilter; 
    20 import org.sophie2.main.func.resources.imports.ResourceImportManager; 
     16import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2117import org.sophie2.main.func.resources.imports.ResourceImportProvider; 
    2218import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
    2319import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider.ProviderMatcher; 
     
    5248                        List<String> filters = event.getEventParam(filterParamIndex, List.class); 
    5349                        ResourceH parent = event.getEventParam(parentParamIndex, ResourceH.class); 
    5450 
    55                         FileFilter filter; 
     51                        FileFilterInfo filterInfo; 
    5652 
    5753                        if (filters == null || filters.isEmpty()) { 
    58                                 filter = ResourceImportManager.ALL_RESOURCE_FILTER; 
     54                                filterInfo = new FileFilterInfo(); 
    5955                        } else { 
    60                                 filter = constructFilter(filters); 
     56                                filterInfo = constructFilter(filters); 
    6157                        } 
    6258 
    6359                        List<ResourceRefR4> refs =  
    64                                 ResourceImportLogic.importResource(filter, false, chooser, parent, true); 
     60                                ResourceImportLogic.importResource(filterInfo, false, chooser, parent, true); 
    6561 
    6662                        if (refs == null || refs.isEmpty()) { 
    6763                                SwingUtilities.invokeLater(new Runnable() { 
     
    8783                        return true; 
    8884                } 
    8985 
    90                 private FileFilter constructFilter(List<String> filters) { 
    91                         List<String> extensions = new LinkedList<String>(); 
    92  
    93                         StringBuilder descriptions = new StringBuilder(); 
     86                private FileFilterInfo constructFilter(List<String> filters) { 
     87                        FileFilterInfo result = new FileFilterInfo(false); 
    9488 
    9589                        for (String kind : filters) { 
    9690                                ProviderMatcher matcher = new ResourceKindMatcher(kind); 
    9791                                ResourceImportProvider provider = SimpleResourceImportProvider.getProvider(matcher); 
    98                                 if (provider != null) { 
    99                                         FileFilter fileFilter = provider.getFileFilter(); 
    100                                         FileExtensionFilter filter = (FileExtensionFilter) fileFilter; 
    101                                         extensions.addAll(Arrays.asList(filter.getExtensions())); 
    102                                         descriptions.append(filter.getDescription() + ", "); 
     92                                if (provider != null && provider.getFilterInfo() != null) { 
     93                                        result.addFilters(provider.getFilterInfo().getFilters()); 
    10394                                } 
    10495                        } 
    105  
    106                         if (descriptions.length() > 2) { 
    107                                 descriptions.delete(descriptions.length() - 2, descriptions.length()); 
    108                         } 
    109  
    110                         return new FileExtensionFilter(descriptions.toString(), 
    111                                         extensions.toArray(new String[] {})); 
     96                         
     97                        return result; 
    11298                } 
    11399 
    114100        } 
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/huds/appearance/BackgroundPatternField.java

     
    1919import org.sophie2.main.app.halos.common.BackgroundDialogField; 
    2020import org.sophie2.main.app.halos.huds.appearance.AppearanceHud.BackgroundPanel; 
    2121import org.sophie2.main.dialogs.input.FileDialogInput; 
     22import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2223 
    2324/** 
    2425 * The field for the pattern of the background 
     
    4950        @Override 
    5051        protected FileDialogInput createDialogInput() { 
    5152                return new FileDialogInput(swingComponent().get(), "Insert Image", 
    52                                 FileDialogInput.IMAGE_FILTER, FileDialogInput.Kind.OPEN); 
     53                                FileDialogInput.Kind.OPEN, new FileFilterInfo(FileDialogInput.IMAGE_FILTER)); 
    5354        } 
    5455 
    5556        @Override 
  • modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/file/FileMenuLogic.java

     
    4242import org.sophie2.main.app.model.book.BookTemplateHelper; 
    4343import org.sophie2.main.dialogs.input.DialogUtils; 
    4444import org.sophie2.main.dialogs.input.FileDialogInput; 
     45import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4546import org.sophie2.main.dialogs.input.FileDialogInput.Kind; 
    4647 
    4748/** 
     
    105106                public boolean handle(EventR3 event) { 
    106107                        Kind kind = FileDialogInput.Kind.OPEN; 
    107108                        FileDialogInput fdi = new FileDialogInput(null, kind.getTitle(), 
    108                                                         FileDialogInput.BOOK_FILTER, "", kind, false, null); 
     109                                                        "", kind, false, null, new FileFilterInfo(FileDialogInput.BOOK_FILTER)); 
    109110 
    110111                        File bookFile = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    111112                        if (bookFile == null) { 
  • modules/org.sophie2.extra.func.print/src/main/java/org/sophie2/extra/func/print/logic/PrintLogic.java

     
    2929import org.sophie2.main.dialogs.input.FileDialogInput; 
    3030import org.sophie2.main.dialogs.input.FileExtensionFilter; 
    3131import org.sophie2.main.dialogs.input.MessageDialogInput; 
     32import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    3233 
    3334import com.lowagie.text.Document; 
    3435import com.lowagie.text.DocumentException; 
     
    201202         */ 
    202203        public static File getFile(BookDocView view) { 
    203204                FileDialogInput input = new FileDialogInput(view.workArea().get().swingComponent().get(), 
    204                                 "Export", new FileExtensionFilter("PDF (*.pdf)", "pdf"), FileDialogInput.Kind.SAVE); 
     205                                "Export", FileDialogInput.Kind.SAVE, new FileFilterInfo(new FileExtensionFilter("PDF (*.pdf)", "pdf"))); 
    205206                File bookFile = DialogManager.get().showDialog(input).getSelectedFile(); 
    206207                 
    207208                return bookFile; 
  • modules/org.sophie2.main.dialogs.input/src/main/java/org/sophie2/main/dialogs/input/FileDialogInput.java

     
    44import java.awt.FileDialog; 
    55import java.io.File; 
    66import java.util.ArrayList; 
     7import java.util.Arrays; 
    78import java.util.Collections; 
     9import java.util.LinkedList; 
    810import java.util.List; 
    911 
    1012import javax.swing.JFileChooser; 
     
    1921 *  
    2022 * @author milo 
    2123 * @author mitex 
     24 * @author meddle 
     25 * @author pap 
    2226 */ 
    2327public class FileDialogInput extends DialogInput<FileDialogInput.FileContainer> { 
    2428 
     
    8084 
    8185        private final Component parent; 
    8286        private final String title; 
    83         private final FileFilter filter; 
     87        private final FileFilterInfo filterInfo; 
    8488        private final String fileName; 
    8589        private final Kind kind; 
    8690        private final boolean multiSelectEnabled; 
     
    96100         *            The parent component for the dialog. 
    97101         * @param title 
    98102         *            Approve button text, for example "Open". 
    99          * @param fileFilter 
    100          *            File filter, for example filter for images (*.jpg, *.gif). Can 
    101          *            be null. If it's null the file dialog will accept all files. 
    102103         * @param fileName 
    103104         *            the initial file name. 
    104105         * @param kind 
     
    107108         *            Is multiselection enabled for the file dialog. 
    108109         * @param fileAccessory  
    109110         *                        {@link FileAccessory} for the input if needed, can be null.  
     111         * @param filterInfo TODO 
    110112         */ 
    111         public FileDialogInput(Component parent, String title, FileFilter fileFilter, String fileName, 
    112                         Kind kind, boolean multiSelectEnabled, FileAccessory<?> fileAccessory) { 
     113        public FileDialogInput(Component parent, String title, String fileName, Kind kind, 
     114                        boolean multiSelectEnabled, FileAccessory<?> fileAccessory, FileFilterInfo filterInfo) { 
     115                assert filterInfo != null; 
    113116                this.parent = parent; 
    114117                this.title = title; 
    115                 this.filter = fileFilter; 
     118                this.filterInfo = filterInfo; 
    116119                this.fileName = fileName; 
    117120                this.kind = kind; 
    118121                this.multiSelectEnabled = multiSelectEnabled; 
     
    127130         *            The parent component for the dialog. 
    128131         * @param title 
    129132         *            Approve button text, for example "Open". 
    130          * @param fileFilter 
    131          *            File filter, for example filter for images (*.jpg, *.gif). Can 
    132          *            be null. If it's null the file dialog will accept all files. 
    133133         * @param kind 
    134134         *                        The kind of the dialog to show.   
     135         * @param filterInfo  
     136         *                      The {@link FileFilterInfo} for this input. 
    135137         */ 
    136         public FileDialogInput(Component parent, String title, FileFilter fileFilter, Kind kind) { 
    137                 this(parent, title, fileFilter, "", kind, false, null); 
     138        public FileDialogInput(Component parent, String title, Kind kind, FileFilterInfo filterInfo) { 
     139                this(parent, title, "", kind, false, null, filterInfo); 
    138140        } 
    139141 
    140142        /** 
     
    143145         *  
    144146         * @param parent 
    145147         *            The parent component for the dialog. 
    146          * @param fileFilter 
    147          *            File filter, for example filter for images (*.jpg, *.gif). Can 
    148          *            be null. If it's null the file dialog will accept all files. 
    149148         * @param kind 
    150149         *            The file dialog kind (OPEN, CLOSE), cannot be null. 
     150          * @param filterInfo  
     151         *                      The {@link FileFilterInfo} for this input. 
    151152         */ 
    152         public FileDialogInput(Component parent, FileFilter fileFilter, Kind kind) { 
    153                 this(parent, kind.getTitle(), fileFilter, kind); 
     153        public FileDialogInput(Component parent, Kind kind, FileFilterInfo filterInfo) { 
     154                this(parent, kind.getTitle(), kind, filterInfo); 
    154155        } 
    155156 
    156157        /** 
     
    179180         * @return  
    180181         *                      The file filter. 
    181182         */ 
    182         public FileFilter getFileFilter() { 
    183                 return this.filter; 
     183        public FileFilterInfo getFilterInfo() { 
     184                return this.filterInfo; 
    184185        } 
    185186 
    186187        @Override 
     
    254255        } 
    255256         
    256257        /** 
     258         * A class representing a set of file filters. 
     259         *  
     260         * @author pap 
     261         */ 
     262        public static class FileFilterInfo { 
     263                private List<FileFilter> filters; 
     264                private boolean useAcceptAllFilter; 
     265                 
     266                /** 
     267                 * Create a FileFilterInfo. 
     268                 *  
     269                 * @param useAcceptAllFilter 
     270                 *              Whether the accept all files filters should be used. 
     271                 * @param fileFilters 
     272                 *              Zero or more file filters to use in the set. 
     273                 */ 
     274                public FileFilterInfo(boolean useAcceptAllFilter, FileFilter...fileFilters) { 
     275                        this.filters = new LinkedList<FileFilter>(Arrays.asList(fileFilters)); 
     276                        this.useAcceptAllFilter = useAcceptAllFilter; 
     277                } 
     278                 
     279                /** 
     280                 * Creates a FileFilterInfo. 
     281                 *  
     282                 * @param useAcceptAllFilter 
     283                 *                      Whether the accept all files filters should be used. 
     284                 * @param fileFilters 
     285                 *                      A list of {@link FileFilter}s to use in the set. 
     286                 */ 
     287                public FileFilterInfo(boolean useAcceptAllFilter, List<FileFilter> fileFilters) { 
     288                        this.filters = new LinkedList<FileFilter>(fileFilters); 
     289                        this.useAcceptAllFilter = useAcceptAllFilter; 
     290                } 
     291                 
     292                /** 
     293                 * Creates a FileFilterInfo. Has the accept all files filter turned on. 
     294                 *  
     295                 * @param fileFilters 
     296                 *                      Zero or more file filters to use. 
     297                 */ 
     298                public FileFilterInfo(FileFilter...fileFilters) { 
     299                        this(true, fileFilters); 
     300                } 
     301                 
     302                /** 
     303                 * Creates a FileFilterInfo. Has the accept all files filter turned on. 
     304                 *  
     305                 * @param fileFilters 
     306                 *                      A list of {@link FileFilter}s to use. 
     307                 */ 
     308                public FileFilterInfo(List<FileFilter> fileFilters) { 
     309                        this(true, fileFilters); 
     310                } 
     311                 
     312                /** 
     313                 * Gets the list of the {@link FileFilter} contained in this 
     314                 * FileFilterInfo. 
     315                 *  
     316                 * @return 
     317                 *              The {@link FileFilter}s of this info. 
     318                 */ 
     319                public List<FileFilter> getFilters() { 
     320                        return Collections.unmodifiableList(this.filters); 
     321                } 
     322                 
     323                /** 
     324                 * Returns whether the accept all files filter should be used. 
     325                 *  
     326                 * @return 
     327                 *                      <code>true</code> if the accept all files filter should  
     328                 *                      be used, <code>false</code> otherwise. 
     329                 */ 
     330                public boolean getUseAcceptAllFilter() { 
     331                        return this.useAcceptAllFilter; 
     332                } 
     333                 
     334                /** 
     335                 * Add s the given {@link FileFilter}s to the ones contained in this FileFilterInfo. 
     336                 *  
     337                 * @param fileFilters 
     338                 *                      The filters to add. 
     339                 */ 
     340                public void addFilters(FileFilter... fileFilters) { 
     341                        this.filters.addAll(Arrays.asList(fileFilters)); 
     342                } 
     343 
     344                /** 
     345                 * Add s the given {@link FileFilter}s to the ones contained in this FileFilterInfo. 
     346                 *  
     347                 * @param fileFilters 
     348                 *                      The filters to add. 
     349                 */ 
     350                public void addFilters(List<FileFilter> fileFilters) { 
     351                        this.filters.addAll(fileFilters); 
     352                } 
     353                 
     354                /** 
     355                 * Checks if the set of filters represented by this info accepts the file given. 
     356                 *  
     357                 *  
     358                 * @param file 
     359                 *                      The file to be checked against this <code>FileFilterInfo</code>. 
     360                 * @return 
     361                 *                      <code>true</code> if the given {@link File} is accepted, <code>false</code> otherwise. 
     362                 */ 
     363                public boolean accepts(File file) { 
     364                        if (this.useAcceptAllFilter) { 
     365                                return true; 
     366                        } 
     367                        for (FileFilter filter : this.filters) { 
     368                                if (filter.accept(file)) { 
     369                                        return true; 
     370                                } 
     371                        } 
     372                        return false; 
     373                } 
     374        } 
     375         
     376         
     377         
     378        /** 
    257379         * Represents simple accessory data, it boxes the data in 
    258380         * a class to be used as a result in the {@link FileContainer}. 
    259381         *  
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/huds/appearance/BackgroundImageField.java

     
    2020import org.sophie2.main.app.halos.common.BackgroundDialogField; 
    2121import org.sophie2.main.app.halos.huds.appearance.AppearanceHud.BackgroundPanel; 
    2222import org.sophie2.main.dialogs.input.FileDialogInput; 
     23import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2324 
    2425/** 
    2526 * The field for the image of the background. 
     
    5354        @Override 
    5455        protected FileDialogInput createDialogInput() { 
    5556                return new FileDialogInput(swingComponent().get(), "Insert Image", 
    56                                 FileDialogInput.IMAGE_FILTER, FileDialogInput.Kind.OPEN); 
     57                                FileDialogInput.Kind.OPEN, new FileFilterInfo(FileDialogInput.IMAGE_FILTER)); 
    5758        } 
    5859 
    5960        @Override 
  • modules/org.sophie2.main.app.halos/src/test/java/org/sophie2/main/app/halos/BackgroundDialogFieldDemo.java

     
    1515import org.sophie2.core.prolib.interfaces.ProObject; 
    1616import org.sophie2.main.app.halos.common.BackgroundDialogField; 
    1717import org.sophie2.main.dialogs.input.FileDialogInput; 
     18import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    1819import org.sophie2.main.func.file.FileFunctionalityModule; 
    1920 
    2021/** 
     
    4950                        @Override 
    5051                        protected FileDialogInput createDialogInput() { 
    5152                                return new FileDialogInput(swingComponent().get(), "Demo Bound Dialog", 
    52                                                 FileDialogInput.IMAGE_FILTER, FileDialogInput.Kind.OPEN); 
     53                                                FileDialogInput.Kind.OPEN, new FileFilterInfo(FileDialogInput.IMAGE_FILTER)); 
    5354                        } 
    5455 
    5556                        @Override 
  • modules/org.sophie2.main.func.image/src/main/java/org/sophie2/main/func/image/ImageModule.java

     
    1818import org.sophie2.main.app.commons.util.SimpleResourceViewProvider; 
    1919import org.sophie2.main.app.menus.insert.InsertMenu; 
    2020import org.sophie2.main.dialogs.input.FileDialogInput; 
     21import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2122import org.sophie2.main.func.image.model.ImageFrameR4; 
    2223import org.sophie2.main.func.image.view.ImageFrameView; 
    2324import org.sophie2.main.func.image.view.ImageResourcePreviewProvider; 
     
    6667        @Override 
    6768        protected void defineExtensions(List<SophieExtension<?>> res) { 
    6869                SimpleResourceImportProvider.register(res, 
    69                                 new ImageImportManager(), FileDialogInput.IMAGE_FILTER);                 
     70                                new ImageImportManager(), new FileFilterInfo(FileDialogInput.IMAGE_FILTER));             
    7071                 
    7172                SimpleResourceViewProvider.register(res, VisualElement.class, 
    7273                                ImageFrameView.class, ImageFrameR4.KIND, 
  • modules/org.sophie2.main.dialogs.input/src/main/java/org/sophie2/main/dialogs/input/FileExtensionFilter.java

     
    77 
    88/** 
    99 * This class is used for filtering a set of file extensions.  
    10  * Extensions are key-sensitive. 
     10 * Extensions are case-sensitive. 
    1111 *  
    1212 * @author pav 
    1313 */ 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/logic/ResourceExportLogic.java

     
    2121import org.sophie2.main.dialogs.input.DialogUtils; 
    2222import org.sophie2.main.dialogs.input.FileDialogInput; 
    2323import org.sophie2.main.dialogs.input.MessageDialogInput; 
     24import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2425import org.sophie2.main.dialogs.input.MessageDialogInput.MessageType; 
    2526import org.sophie2.main.func.resources.MainFuncResourcesModule; 
    2627import org.sophie2.main.func.resources.exports.ExportFormatDialog; 
     
    8889                         
    8990                        FileFilter filter = manager.getFileFilter();  
    9091                        FileDialogInput input = new FileDialogInput(null,  
    91                                         "Export resource", filter, 
    92                                         manager.getFileName(resource.getAccess()), 
    93                                         FileDialogInput.Kind.SAVE, false, null); 
     92                                        "Export resource", manager.getFileName(resource.getAccess()), 
     93                                        FileDialogInput.Kind.SAVE, 
     94                                        false, null, new FileFilterInfo(filter)); 
    9495                        File file = DialogManager.get().showDialog(input).getSelectedFile(); 
    9596 
    9697                        if (file == null) { 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/imports/ResourceImportUtil.java

     
    3939import org.sophie2.main.dialogs.input.DialogUtils; 
    4040import org.sophie2.main.dialogs.input.FileDialogInput; 
    4141import org.sophie2.main.dialogs.input.MessageDialogInput; 
     42import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4243import org.sophie2.main.dialogs.input.MessageDialogInput.MessageType; 
    4344 
    4445/** 
     
    5657         */ 
    5758        public static final ResourceImportProvider SOPHIE_FORMAT_PROVIDER =  
    5859                new SimpleResourceImportProvider(new SophieFormatImportManager(),  
    59                                 FileDialogInput.BOOK_FILTER); 
     60                                new FileFilterInfo(FileDialogInput.BOOK_FILTER)); 
    6061 
    6162        /** 
    6263         * Imports a resource in the passed book, without inserting a frame 
  • modules/org.sophie2.extra.func.annotations/src/main/java/org/sophie2/extra/func/annotations/logic/AnnotationsLogic.java

     
    3535import org.sophie2.main.dialogs.input.DialogUtils; 
    3636import org.sophie2.main.dialogs.input.FileDialogInput; 
    3737import org.sophie2.main.dialogs.input.FileExtensionFilter; 
     38import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    3839 
    3940/** 
    4041 * Handles events fired by the {@link AllAnnotationsPalette} - import, export, 
     
    6061                        assert bv != null : "There book view should not be null here."; 
    6162 
    6263                        FileDialogInput fdi = new FileDialogInput(source.swingComponent() 
    63                                         .get(), "Import", ANNOTATION_FILTER, FileDialogInput.Kind.OPEN); 
     64                                        .get(), "Import", FileDialogInput.Kind.OPEN, new FileFilterInfo(ANNOTATION_FILTER)); 
    6465                        File file = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    6566 
    6667                        if (file == null || !file.exists()) { 
     
    129130                        } 
    130131 
    131132                        FileDialogInput fdi = new FileDialogInput(source.swingComponent() 
    132                                         .get(), "Export", ANNOTATION_FILTER, FileDialogInput.Kind.SAVE); 
     133                                        .get(), "Export", FileDialogInput.Kind.SAVE, new FileFilterInfo(ANNOTATION_FILTER)); 
    133134                        File file = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    134135 
    135136                        if (file == null) { 
  • modules/org.sophie2.main.app.halos/src/main/java/org/sophie2/main/app/halos/grouping/GroupHalosLogic.java

     
    236236                        ElementH parentH = ((ElementView) groupView.parent().get()).model().get(); 
    237237                         
    238238                        final ResourceRefR4 relativeGroupRef =  
    239                                 ResourceRefR4.getRelativeRef(groupRef, parentH.getRef()); 
     239                                ResourceRefR4.getRelativeRef(parentH.getRef(), groupRef); 
    240240                        ResourceAccess parentAccess = parentH.getAccess(); 
    241241                        ImmList<ActivationChannel> channels =  
    242242                                CompositeElement.KEY_SUB_ELEMENTS.get(parentAccess); 
  • modules/org.sophie2.extra.func.plain/src/main/java/org/sophie2/extra/func/plain/PlainTextLogic.java

     
    1919import org.sophie2.main.dialogs.input.DialogUtils; 
    2020import org.sophie2.main.dialogs.input.FileDialogInput; 
    2121import org.sophie2.main.dialogs.input.FileExtensionFilter; 
     22import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2223import org.sophie2.main.func.text.model.HeadTextFrameH; 
    2324 
    2425/** 
     
    4849                        PageH page = docView.bookView().get().getCurrentPageView().model().get(); 
    4950 
    5051                        FileDialogInput fdi = new FileDialogInput(source.swingMenu().get(), 
    51                                         new FileExtensionFilter("TXT file", "txt"), FileDialogInput.Kind.OPEN); 
     52                                        FileDialogInput.Kind.OPEN, new FileFilterInfo(new FileExtensionFilter("TXT file", "txt"))); 
    5253                        File txtFile = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    5354                         
    5455                        if (txtFile == null) { 
  • modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileDialog.java

     
    1010import javax.swing.JComponent; 
    1111import javax.swing.JFileChooser; 
    1212import javax.swing.JPanel; 
     13import javax.swing.filechooser.FileFilter; 
    1314 
    1415import org.sophie2.base.dialogs.Dialog; 
    1516import org.sophie2.base.dialogs.DialogManager; 
     
    5051                        this.fileChooser.setAccessory(null); 
    5152                } 
    5253                 
    53                 if (input.getFileFilter() != null) { 
    54                         this.fileChooser.setFileFilter(input.getFileFilter()); 
    55                         this.fileChooser.setAcceptAllFileFilterUsed(false); 
    56                 } else { 
    57                         this.fileChooser.setFileFilter( 
    58                                         this.fileChooser.getAcceptAllFileFilter()); 
     54                for (FileFilter filter : input.getFilterInfo().getFilters()) { 
     55                        this.fileChooser.addChoosableFileFilter(filter); 
    5956                } 
     57                this.fileChooser.setAcceptAllFileFilterUsed(input.getFilterInfo().getUseAcceptAllFilter()); 
     58                         
    6059                this.fileChooser.setSelectedFile(new File(input.getFileName())); 
    6160                this.fileChooser.setMultiSelectionEnabled(input.isMultiSelectEnabled()); 
    6261                 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/logic/ResourceImportLogic.java

     
    77import java.util.LinkedList; 
    88import java.util.List; 
    99 
    10 import javax.swing.filechooser.FileFilter; 
    11  
    1210import org.sophie2.base.commons.util.position.ImmArea; 
    1311import org.sophie2.base.commons.util.position.ImmPoint; 
    1412import org.sophie2.base.commons.util.position.ImmRect; 
     
    5149import org.sophie2.main.app.commons.util.AppViewUtil; 
    5250import org.sophie2.main.app.menus.insert.InsertResourceMenuItem; 
    5351import org.sophie2.main.dialogs.input.FileDialogInput; 
     52import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    5453import org.sophie2.main.dnd.dnddata.FileListData; 
    5554import org.sophie2.main.dnd.dnddata.ResourceRefData; 
    5655import org.sophie2.main.dnd.dnddata.ResourceRevisionData; 
    5756import org.sophie2.main.func.resources.MainFuncResourcesModule; 
    5857import org.sophie2.main.func.resources.imports.ImportEventIds; 
    5958import org.sophie2.main.func.resources.imports.ResourceImportInfo; 
    60 import org.sophie2.main.func.resources.imports.ResourceImportManager; 
    6159import org.sophie2.main.func.resources.imports.ResourceImportProvider; 
    6260import org.sophie2.main.func.resources.imports.ResourceImportUtil; 
    6361import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
     
    167165                                return false; 
    168166                        } 
    169167 
    170                         List<ResourceRefR4> result = importResource( 
    171                                         ResourceImportManager.ALL_RESOURCE_FILTER, 
     168                        List<ResourceRefR4> result = importResource(new FileFilterInfo(), 
    172169                                        true, docView, docView.model().get(), false); 
    173170                         
    174171                        return  !result.isEmpty(); 
     
    590587        /** 
    591588         * Imports resources into a given parent resource, raising file dialog. 
    592589         *  
    593          * @param filter 
    594          *                      The filter of the file dialog to raise. 
     590         * @param filterInfo 
     591         *                      The {@link FileFilterInfo} of the file dialog to raise. 
    595592         * @param multySelect 
    596593         *                      If in the file dialog the multiple selection is allowed. 
    597594         * @param element 
     
    604601         *                      List of the {@link ResourceRefR4}s of the newly imported resources 
    605602         *                      or null of no resource was imported. 
    606603         */ 
    607         public static List<ResourceRefR4> importResource(FileFilter filter, boolean multySelect, 
     604        public static List<ResourceRefR4> importResource(FileFilterInfo filterInfo, boolean multySelect, 
    608605                        VisualElement element, ResourceH parentResource, boolean strictFiltering) { 
    609606 
    610607                // Show file dialog for all resources:  
    611608                FileDialogInput input = new FileDialogInput(null,  
    612                                 "Import resource", filter, 
    613                                 "", FileDialogInput.Kind.OPEN, multySelect, null); 
     609                                "Import resource", "", 
     610                                FileDialogInput.Kind.OPEN, multySelect, null, filterInfo); 
    614611 
    615612                List<File> files =  
    616613                        DialogManager.get().showDialog(input).getSelectedFiles(); 
     
    621618 
    622619                files = addArchived(files); 
    623620 
    624                 return importFiles(files, parentResource, strictFiltering, filter, element); 
     621                return importFiles(files, parentResource, strictFiltering, filterInfo, element); 
    625622        } 
    626623 
    627624        /** 
     
    633630         *              Parent resource where the resources will be imported. 
    634631         * @param strictFiltering 
    635632         *              Whether to check if the specified filter accepts the files. 
    636          * @param filter 
    637          *              If <code>strictFiltering</code> is true, an additional check whether this filter 
     633         * @param filterInfo 
     634         *              If <code>strictFiltering</code> is true, an additional check whether this filter info 
    638635         *              accepts the files will be performed. 
    639636         * @param element 
    640637         *              Visual element from which we could find the current {@link BookView}. 
     
    644641         *              or null of no resource was imported. 
    645642         */ 
    646643        public static List<ResourceRefR4> importFiles(List<File> files, ResourceH parentResource, 
    647                         boolean strictFiltering, FileFilter filter, VisualElement element) { 
     644                        boolean strictFiltering, FileFilterInfo filterInfo, VisualElement element) { 
    648645                List<File> invalidFiles = new ArrayList<File>(files.size()); 
    649646                List<ResourceRefR4> refs = new ArrayList<ResourceRefR4>(files.size()); 
    650647                for (final File file : files) { 
    651                         if (strictFiltering && !filter.accept(file)) { 
     648                        if (strictFiltering && !filterInfo.accepts(file)) { 
    652649                                invalidFiles.add(file); 
    653650                                continue; 
    654651                        } 
     
    661658 
    662659                                        @Override 
    663660                                        public boolean check(ResourceImportProvider curProvider) { 
    664                                                 return curProvider.getFileFilter() != null  
    665                                                 && curProvider.getFileFilter().accept(file); 
     661                                                return curProvider.getFilterInfo() != null  
     662                                                && curProvider.getFilterInfo().accepts(file); 
    666663                                        } 
    667664                                });  
    668665                        } 
     
    720717 
    721718                                        @Override 
    722719                                        public boolean check(ResourceImportProvider curProvider) { 
    723                                                 return curProvider.getFileFilter() != null  
    724                                                         && curProvider.getFileFilter().accept(file); 
     720                                                return curProvider.getFilterInfo() != null  
     721                                                        && curProvider.getFilterInfo().accepts(file); 
    725722                                        } 
    726723                                }); 
    727724                         
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/imports/SimpleResourceImportProvider.java

     
    22 
    33import java.util.List; 
    44 
    5 import javax.swing.filechooser.FileFilter; 
    6  
    75import org.sophie2.core.modularity.SimpleSophieExtension; 
    86import org.sophie2.core.modularity.SophieExtension; 
    97import org.sophie2.core.modularity.SophieExtensionPoint; 
     8import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    109import org.sophie2.main.func.resources.MainFuncResourcesModule; 
    1110 
    1211/** 
     
    1716public class SimpleResourceImportProvider implements ResourceImportProvider { 
    1817 
    1918        private final ResourceImportManager<?> importManager; 
    20         private final FileFilter filter;  
     19        private final FileFilterInfo filterInfo;  
    2120         
    2221        /** 
    2322         * Creates an provider by {@link ResourceImportManager} and filter. 
    2423         *  
    2524         * @param importManager 
    2625         *                      The <code>ResourceImportManager</code> for the new provider. 
    27          * @param filter 
    28          *                      The {@link FileFilter} of the files that provider can handle. 
     26         * @param filterInfo 
     27         *                      The {@link FileFilterInfo} of the files that provider can handle. 
    2928         */ 
    3029        public SimpleResourceImportProvider(ResourceImportManager<?> importManager, 
    31                         FileFilter filter) { 
     30                        FileFilterInfo filterInfo) { 
    3231                this.importManager = importManager; 
    33                 this.filter = filter; 
     32                this.filterInfo = filterInfo; 
    3433        } 
    3534         
    36         public FileFilter getFileFilter() { 
    37                 return this.filter; 
     35        public FileFilterInfo getFilterInfo() { 
     36                return this.filterInfo; 
    3837        } 
    3938 
    4039        public ResourceImportManager<?> getImportManager() { 
     
    4948         *                      The list of extensions in which to register. 
    5049         * @param resourceImportManager 
    5150         *                      The {@link ResourceImportManager} of this provider. 
    52          * @param fileFilter 
    53          *                      The {@link FileFilter} of this provider. 
     51         * @param filterInfo 
     52         *                      The {@link FileFilterInfo} of this provider. 
    5453         */ 
    5554        public static void register(List<SophieExtension<?>> res, 
    56                         ResourceImportManager<?> resourceImportManager, FileFilter fileFilter) { 
     55                        ResourceImportManager<?> resourceImportManager, FileFilterInfo filterInfo) { 
    5756                SimpleResourceImportProvider provider =  
    58                         new SimpleResourceImportProvider(resourceImportManager, fileFilter); 
     57                        new SimpleResourceImportProvider(resourceImportManager, filterInfo); 
    5958                res.add(SimpleSophieExtension.create(ResourceImportProvider.class, 
    6059                                provider)); 
    6160 
  • modules/org.sophie2.extra.func.html/src/main/java/org/sophie2/extra/func/html/HtmlModule.java

     
    1818import org.sophie2.extra.func.html.view.HtmlLogic; 
    1919import org.sophie2.extra.func.html.view.InsertHtmlItem; 
    2020import org.sophie2.main.app.menus.insert.InsertMenu; 
     21import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    2122import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
    2223import org.sophie2.main.func.text.model.HeadTextFrameR4; 
    2324import org.sophie2.main.func.text.model.TailTextFrameR4; 
     
    6768                SimpleOperation.fillExtensions(res, HtmlLogic.class); 
    6869 
    6970                SimpleResourceImportProvider.register(res, 
    70                                 new HtmlTextImportManager(), HtmlTextImportManager.FILE_FILTER); 
     71                                new HtmlTextImportManager(), new FileFilterInfo(HtmlTextImportManager.FILE_FILTER)); 
    7172                 
    7273                res.add(new SimpleSophieExtension<Persister>(Persister.class, 
    7374                                new BookToHtmlPersister())); 
  • modules/org.sophie2.extra.func.browser/src/main/java/org/sophie2/extra/func/browser/flash/view/FlashLogic.java

     
    2828import org.sophie2.main.app.commons.util.AppViewUtil; 
    2929import org.sophie2.main.dialogs.input.FileDialogInput; 
    3030import org.sophie2.main.dialogs.input.FileExtensionFilter; 
     31import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    3132 
    3233/** 
    3334 * This class handles actions with flash. 
     
    132133                final FileFilter swfFilter = new FileExtensionFilter("SWF (*.swf)", 
    133134                                "swf"); 
    134135                FileDialogInput fdi = new FileDialogInput(workArea.swingComponent() 
    135                                 .get(), "Open Flash", swfFilter, FileDialogInput.Kind.OPEN); 
     136                                .get(), "Open Flash", FileDialogInput.Kind.OPEN, new FileFilterInfo(swfFilter)); 
    136137                File imageFile = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    137138                if (imageFile == null) { 
    138139                        return null; 
  • modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/imports/ResourceImportProvider.java

     
    11package org.sophie2.main.func.resources.imports; 
    22 
    3 import javax.swing.filechooser.FileFilter; 
     3import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    44 
    55/** 
    66 * Provides logic for importing resources. 
     
    2626         * @return 
    2727         *                      The file filter. 
    2828         */ 
    29         FileFilter getFileFilter(); 
     29        FileFilterInfo getFilterInfo(); 
    3030         
    3131        /** 
    3232         * Retrieves the import role of the 
  • modules/org.sophie2.extra.func.scripting/src/main/java/org/sophie2/extra/func/scripting/logic/ScriptingLogic.java

     
    3434import org.sophie2.main.dialogs.input.DialogUtils; 
    3535import org.sophie2.main.dialogs.input.FileDialogInput; 
    3636import org.sophie2.main.dialogs.input.FileExtensionFilter; 
     37import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    3738 
    3839/** 
    3940 * Handles events related to scripting. 
     
    144145                protected boolean createFromFile(Component parentComponent, ResourceAccess bookAccess, 
    145146                                final ResourceRefR4 scriptRef) { 
    146147 
    147                         FileDialogInput fdi = new FileDialogInput(parentComponent, new FileExtensionFilter( 
    148                                         "JavaScript (*.js)", "js"), FileDialogInput.Kind.OPEN); 
     148                        FileDialogInput fdi = new FileDialogInput(parentComponent, FileDialogInput.Kind.OPEN, new FileFilterInfo(new FileExtensionFilter( 
     149                                                        "JavaScript (*.js)", "js"))); 
    149150                        File scriptFile = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    150151                         
    151152                        if (scriptFile == null) { 
  • modules/org.sophie2.extra.func.html/src/main/java/org/sophie2/extra/func/html/view/HtmlLogic.java

     
    1515import org.sophie2.extra.func.html.HtmlTextImportManager; 
    1616import org.sophie2.main.dialogs.input.FileDialogInput; 
    1717import org.sophie2.main.dialogs.input.MessageDialogInput; 
     18import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    1819 
    1920/** 
    2021 * Handles events related to HTML (such as import/export). 
     
    3940                        ExportAsHtmlItem source = event.getSource(ExportAsHtmlItem.class); 
    4041 
    4142                        FileDialogInput fdi = new FileDialogInput(source.swingMenu().get(), "Export", 
    42                                         HtmlTextImportManager.FILE_FILTER, FileDialogInput.Kind.SAVE); 
     43                                        FileDialogInput.Kind.SAVE, new FileFilterInfo(HtmlTextImportManager.FILE_FILTER)); 
    4344                        File file = DialogManager.get().showDialog(fdi).getSelectedFile(); 
    4445 
    4546                        if (file == null) { 
  • modules/org.sophie2.extra.func.embedded/src/main/java/org/sophie2/extra/func/embedded/EmbeddedBooksModule.java

     
    3737import org.sophie2.main.app.layout.left.books.BooksTab; 
    3838import org.sophie2.main.app.menus.insert.InsertMenu; 
    3939import org.sophie2.main.dialogs.input.FileDialogInput; 
     40import org.sophie2.main.dialogs.input.FileDialogInput.FileFilterInfo; 
    4041import org.sophie2.main.func.resources.imports.SimpleResourceImportProvider; 
    4142 
    4243/** 
     
    8687                                InsertBookItem.class, "insert-book-item", "66-insert-embedded-book")); 
    8788                 
    8889                SimpleResourceImportProvider.register(res, 
    89                                 new BookImportManager(), FileDialogInput.BOOK_FILTER); 
     90                                new BookImportManager(), new FileFilterInfo(FileDialogInput.BOOK_FILTER)); 
    9091                 
    9192                SimpleResourceViewProvider.register(res, VisualElement.class, 
    9293                                EmbeddedBookFrameView.class, EmbeddedBookFrameR4.KIND,