|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.openide.filesystems.FileSystem org.openide.filesystems.AbstractFileSystem
This convenience implementation does much of the hard work of
FileSystem
and is generally more pleasant to create
subclasses of.
It caches information about the filesystem in memory and periodically refreshes its content. Many other
operations are performed in a safer manner so as to reuse experience of NetBeans developers; should be
substantially simpler to subclass than FileSystem
itself.
Besides what is mentioned here, the AbstractFileSystem
subclass be configurable as a JavaBean
(e.g. server address, prefix, whatever it needs).
First of all, you need not separately implement a FileObject
- this is taken care of for you. You
need only provide some information about how essential actions should be carried out.
You should implement getDisplayName()
to set the display name.
You may cause the filesystem to automatically refresh itself at periodic intervals, in case it is not
possible to be notified of changes directly. To do so, call setRefreshTime(int)
, e.g. from the
constructor.
refreshRoot()
must be called if the filesystem supports changing of its root directory (as the
local filesystem does, for example).
Most of the meat of the implementation is provided by setting appropriate values for four protected variables, which should be initialized in the constructor; each represents an implementation of a separate interface handling one aspect of the filesystem.
list
should contain an implementation of AbstractFileSystem.List
. This only
specifies a way of accessing the list of children in a folder.
info
contains an AbstractFileSystem.Info
which provides basic file statistics.
It also specifies the raw implementation of two basic types of actions: getting input and output streams for the file; and locking and unlocking it physically (optional and not to be confused with locking within the IDE).
change
is an AbstractFileSystem.Change
which provides the interface to create new folders
and files; delete them; and rename them (within the same directory).
attr
is an AbstractFileSystem.Attr
allowing the IDE to read and write serializable
attributes (meta-information) to be associated with the file. Such attributes are not much used any more, but
they are occasionally.
There is a default implementation in DefaultAttributes
which stores attributes in a file called
.nbattrs
in each folder for which a file has some attributes, using XML augmented by Java
serialization, though the regular filesystems in the IDE now instead store all attributes globally in
$userdir/var/attributes.xml
. If you do use DefaultAttributes
, use it not only for
attr
but also for list
(passing in a separate private AbstractFileSystem.List
implementation to its constructor) in order to filter the .nbattrs
files from view.
Nested Class Summary | |
static interface |
AbstractFileSystem.Attr
Handle attributes of files. |
static interface |
AbstractFileSystem.Change
Controls modification of files. |
static interface |
AbstractFileSystem.Info
Information about files. |
static interface |
AbstractFileSystem.List
Provides access to the hierarchy of resources. |
static interface |
AbstractFileSystem.Transfer
Controls on moving of files. |
Nested classes inherited from class org.openide.filesystems.FileSystem |
FileSystem.AtomicAction, FileSystem.Environment, FileSystem.HtmlStatus, FileSystem.Status |
Field Summary | |
protected AbstractFileSystem.Attr |
attr
Handling of attributes for files. |
protected AbstractFileSystem.Change |
change
Methods for modification of files. |
protected AbstractFileSystem.Info |
info
Methods for obtaining information about files. |
protected AbstractFileSystem.List |
list
Provider of hierarchy of files. |
protected AbstractFileSystem.Transfer |
transfer
Methods for moving of files. |
Fields inherited from class org.openide.filesystems.FileSystem |
PROP_DISPLAY_NAME, PROP_HIDDEN, PROP_READ_ONLY, PROP_ROOT, PROP_SYSTEM_NAME, PROP_VALID |
Constructor Summary | |
AbstractFileSystem()
|
Method Summary | |
protected boolean |
canRead(String name)
Tests if this file can be read. |
protected boolean |
canWrite(String name)
Tests if this file can be written to. |
protected boolean |
checkVirtual(String name)
This method is called from AbstractFileObject.isVirtual. |
protected Reference |
createReference(FileObject fo)
Creates Reference. |
protected Enumeration |
existingFileObjects(FileObject fo)
For the FileObject specified as parameter, returns the recursive enumeration of existing children fileobjects (both folders and data). |
FileObject |
find(String aPackage,
String name,
String ext)
Finds file in the filesystem by name. |
protected Reference |
findReference(String resourceName)
This method allows to find Reference to resourceName |
FileObject |
findResource(String name)
Finds a file given its full resource path. |
SystemAction[] |
getActions()
Returns an array of actions that can be invoked on any file in this filesystem. |
abstract String |
getDisplayName()
Provides a name for the system that can be presented to the user. |
protected int |
getRefreshTime()
Get the number of milliseconds between automatic refreshes of the directory structure. |
FileObject |
getRoot()
Getter for root folder in the filesystem. |
protected void |
markImportant(String name,
boolean important)
Mark the file as being important or unimportant. |
void |
refresh(boolean expected)
Actually implements contract of FileSystem.refresh(). |
protected void |
refreshResource(String name,
boolean expected)
Allows subclasses to fire that a change occured in a file or folder. |
protected FileObject |
refreshRoot()
Instruct the filesystem that the root should change. |
protected void |
setRefreshTime(int ms)
Set the number of milliseconds between automatic refreshes of the directory structure. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected AbstractFileSystem.List list
protected AbstractFileSystem.Change change
protected AbstractFileSystem.Transfer transfer
protected AbstractFileSystem.Info info
protected AbstractFileSystem.Attr attr
Constructor Detail |
public AbstractFileSystem()
Method Detail |
public void refresh(boolean expected)
refresh
in class FileSystem
expected
- should the file events be marked as expected change or not?FileEvent.isExpected()
public abstract String getDisplayName()
FileSystem
This call should never be used to attempt to identify the file root
of the filesystem. On some systems it may happen to look the same but this is a
coincidence and may well change in the future. Either check whether
you are working with a LocalFileSystem
or similar implementation and use
LocalFileSystem.getRootDirectory()
; or better, try
FileUtil.toFile(org.openide.filesystems.FileObject)
which is designed to do this correctly.
Note: for most purposes it is probably a bad idea to use
this method. Instead look at FileUtil.getFileDisplayName(org.openide.filesystems.FileObject)
.
getDisplayName
in class FileSystem
public FileObject getRoot()
FileSystem
getRoot
in class FileSystem
public FileObject find(String aPackage, String name, String ext)
FileSystem
The default implementation converts dots in the package name into slashes,
concatenates the strings, adds any extension prefixed by a dot and calls
the findResource
method.
Note: when both of name
and ext
are null
then name and
extension should be ignored and scan should look only for a package.
find
in class FileSystem
aPackage
- package name where each package component is separated by a dotname
- name of the file (without dots) or null
if
one wants to obtain a folder (package) and not a file in itext
- extension of the file (without leading dot) or null
if one needs
a package and not a file
null
if the file does not existpublic FileObject findResource(String name)
FileSystem
findResource
in class FileSystem
name
- the resource path, e.g. "dir/subdir/file.ext" or "dir/subdir" or "dir"
null
if no such file existsprotected Reference createReference(FileObject fo)
fo
- is FileObject. It`s reference yourequire to get.
protected final Reference findReference(String resourceName)
resourceName
- is name of resource
public SystemAction[] getActions()
FileSystem
Menu
,
Popup
,
and Toolbar
presenters.
getActions
in class FileSystem
protected final void setRefreshTime(int ms)
ms
- number of milliseconds between two refreshes; if <= 0
then refreshing is disabledprotected final int getRefreshTime()
0
if refreshing is disabledprotected final FileObject refreshRoot()
protected final void refreshResource(String name, boolean expected)
name
- resource name of the file where the change occuredexpected
- true if the user initiated change and expects itprotected final Enumeration existingFileObjects(FileObject fo)
fo
- the starting point for the recursive fileobject search
protected boolean checkVirtual(String name)
name
- of the file
protected boolean canWrite(String name)
name
- resource name
protected boolean canRead(String name)
name
- resource name
protected void markImportant(String name, boolean important)
name
- the file to markimportant
- true indicates that file is important, false conversely
file is unimportant.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |