commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Fortner <phidia...@yahoo.com>
Subject Re: [vfs] FileSelectInfo Question
Date Thu, 30 Mar 2006 14:27:42 GMT
Mario,
I read the wiki before I sent the question.  I know that so seldom 
happens on this list. :-)

I've implemented a FileChooser based on Swing's code, but using VFS 
instead of the standard java.io.File classes.  However, I've run into a 
couple of problems that I can't seem to get past. Implementing 
Swing-compatible file filters is one of them.  In my VFSFileChooser 
class there are a couple of methods from the Swing JFileChooser that I 
can't figure out how to implement with VFS.  The problem boils down to 
the fact that I can't instantiate or create FileSelectInfo objects used 
by the filter.

    public void setFileFilter(FileFilter filter) {
        FileFilter oldValue = fileFilter;
        fileFilter = filter;
        if (filter != null) {
            if (isMultiSelectionEnabled() && selectedFiles != null
                    && selectedFiles.length > 0) {
                Vector fList = new Vector();
                boolean failed = false;
                for (int i = 0; i < selectedFiles.length; i++) {
                    //if (filter.accept(selectedFiles[i])) { FIXME
                        fList.add(selectedFiles[i]);
                    //} else {
                    //    failed = true;
                    //}
                }
                if (failed) {
                    setSelectedFiles((fList.size() == 0) ? null
                            : (FileObject[]) fList.toArray(new 
FileObject[fList.size()]));
                }
            } else if (selectedFile != null ) { //&& 
!filter.accept(selectedFile) FIXME
                setSelectedFile(null);
            }
        }
        firePropertyChange(FILE_FILTER_CHANGED_PROPERTY, oldValue, 
fileFilter);
    }


    public boolean accept(FileObject f) {
        boolean shown = true;
        if (f != null && fileFilter != null) {
            //shown = fileFilter.accept(f); FIXME
        }
        return shown;
    }

As far as I can tell, I can't instantiate FileSelectInfo, and I can't 
find any method that actually creates FileSelectInfo classes. So when I 
run into code such as the stuff shown above, I'm stuck because I can't 
create a FileSelectInfo object.

In general, most of my problems with FileSelectInfo and a few other 
classes in VFS is that rather than building upon the java.io classes (or 
at the very least deriving an interface based upon the File class and 
building upon that), they go off in some other (incompatible) 
direction.  So when people like me are trying to use VFS with Swing 
classes or other standard Java classes, they run into problem after problem.

I'm hoping that in later releases of VFS, that the some work is done to 
simplify and standardize the API.  This might improve its chances to be 
used on JSR 203.  Even if it means creating adapter classes that bridge 
VFS and java.io classes, this would help improve VFS's adoption.

Mark


Mario Ivankovits wrote:
> Hi!
>   
>> There doesn't seem to be a way to turn a FileObject into a
>> FileSelectInfo object.  And even though you mentioned that the
>> FileSelectInfo gives you access to the root, and a few other things, I
>> still don't see what value that has when you're trying to filter based
>> on either name or metadata.
>>     
> And I dont get your problems with the FileSelectInfo ;-)
>
> Why would you turn a FileObject into a FileSelectInfo. This is something
> VFS do for you.
>
> On http://wiki.apache.org/jakarta-commons/VfsFaq you will find an
> example how to use a selector.
>
> To get the FileObject in question you can call fileSelectInfo.getFile().
>
>
> Ciao,
> Mario
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
>   


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message