org.openide.loaders
Class MultiDataObject

java.lang.Object
  |
  +--org.openide.loaders.DataObject
        |
        +--org.openide.loaders.MultiDataObject
All Implemented Interfaces:
Node.Cookie, Serializable
Direct Known Subclasses:
DataFolder, DataShadow, InstanceDataObject, XMLDataObject

public class MultiDataObject
extends DataObject

Provides support for handling of data objects with multiple files. One file is represented by one MultiDataObject.Entry. Each handler has one primary entry and zero or more secondary entries.

See Also:
Serialized Form

Inner Class Summary
 class MultiDataObject.Entry
          Represents one file in a group data object.
 
Inner classes inherited from class org.openide.loaders.DataObject
DataObject.Container, DataObject.Registry
 
Fields inherited from class org.openide.loaders.DataObject
PROP_COOKIE, PROP_FILES, PROP_HELP, PROP_MODIFIED, PROP_NAME, PROP_PRIMARY_FILE, PROP_TEMPLATE, PROP_VALID
 
Constructor Summary
MultiDataObject(FileObject fo, MultiFileLoader loader)
          Create a handler.
 
Method Summary
protected  void addSecondaryEntry(MultiDataObject.Entry fe)
          Add a new secondary entry to the list.
protected  Node createNodeDelegate()
          Provides node that should represent this data object.
 Set files()
          Get all contained files.
 MultiDataObject.Entry findSecondaryEntry(FileObject fo)
          For a given file, find the associated secondary entry.
 Node.Cookie getCookie(Class type)
          Look for a cookie in the current cookie set matching the requested class.
protected  CookieSet getCookieSet()
          Get the set of cookies.
 HelpCtx getHelpCtx()
          Get help context for this object.
 MultiFileLoader getMultiFileLoader()
          Getter for the multi file loader that created this object.
 MultiDataObject.Entry getPrimaryEntry()
          Get the primary entry.
protected  DataObject handleCopy(DataFolder df)
          Copies primary and secondary files to new folder.
protected  DataObject handleCreateFromTemplate(DataFolder df, String name)
          Create a new data object from template (implemented in subclasses).
protected  void handleDelete()
          Delete this object (implemented by subclasses).
protected  FileObject handleMove(DataFolder df)
          Moves primary and secondary files to a new folder.
protected  FileObject handleRename(String name)
          Rename this object (implemented in subclasses).
 boolean isCopyAllowed()
          Test whether the object may be copied.
 boolean isDeleteAllowed()
          Test whether the object may be deleted.
 boolean isMoveAllowed()
          Test whether the object may be moved.
 boolean isRenameAllowed()
          Test whether the object may be renamed.
protected  MultiDataObject.Entry registerEntry(FileObject fo)
          Tests whether this file is between entries and if not, creates a secondary entry for it and adds it into set of secondary entries.
protected  void removeSecondaryEntry(MultiDataObject.Entry fe)
          Remove a secondary entry from the list.
 Set secondaryEntries()
          Get secondary entries.
protected  void setCookieSet(CookieSet s)
          Deprecated. just use getCookieSet().add(...) instead
protected  FileLock takePrimaryFileLock()
          Obtains lock for primary file.
 
Methods inherited from class org.openide.loaders.DataObject
addPropertyChangeListener, addVetoableChangeListener, copy, createFromTemplate, createFromTemplate, createShadow, delete, dispose, find, firePropertyChange, fireVetoableChange, getCookie, getFolder, getLoader, getName, getNodeDelegate, getPrimaryFile, getRegistry, handleCreateShadow, isModified, isShadowAllowed, isTemplate, isValid, markFiles, move, removePropertyChangeListener, removeVetoableChangeListener, rename, setModified, setTemplate, setValid, toString, writeReplace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultiDataObject

public MultiDataObject(FileObject fo,
                       MultiFileLoader loader)
                throws DataObjectExistsException
Create a handler.
Parameters:
fo - the primary file object
loader - loader of this data object
Method Detail

getMultiFileLoader

public final MultiFileLoader getMultiFileLoader()
Getter for the multi file loader that created this object.
Returns:
the multi loader for the object

files

public Set files()
Description copied from class: DataObject
Get all contained files. These file objects should ideally have had the important flag set appropriately.

The default implementation returns a set consisting only of the primary file.

Overrides:
files in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
set of FileObjects

isDeleteAllowed

public boolean isDeleteAllowed()
Description copied from class: DataObject
Test whether the object may be deleted.
Overrides:
isDeleteAllowed in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
true if it may

isCopyAllowed

public boolean isCopyAllowed()
Description copied from class: DataObject
Test whether the object may be copied.
Overrides:
isCopyAllowed in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
true if it may

isMoveAllowed

public boolean isMoveAllowed()
Description copied from class: DataObject
Test whether the object may be moved.
Overrides:
isMoveAllowed in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
true if it may

isRenameAllowed

public boolean isRenameAllowed()
Description copied from class: DataObject
Test whether the object may be renamed.
Overrides:
isRenameAllowed in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
true if it may

getHelpCtx

public HelpCtx getHelpCtx()
Description copied from class: DataObject
Get help context for this object.
Overrides:
getHelpCtx in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
the help context

createNodeDelegate

protected Node createNodeDelegate()
Provides node that should represent this data object.
Overrides:
createNodeDelegate in class DataObject
Returns:
the node representation
See Also:
DataNode

addSecondaryEntry

protected final void addSecondaryEntry(MultiDataObject.Entry fe)
Add a new secondary entry to the list.
Parameters:
fe - the entry to add

removeSecondaryEntry

protected final void removeSecondaryEntry(MultiDataObject.Entry fe)
Remove a secondary entry from the list.
Parameters:
fe - the entry to remove

registerEntry

protected final MultiDataObject.Entry registerEntry(FileObject fo)
Tests whether this file is between entries and if not, creates a secondary entry for it and adds it into set of secondary entries.

This method should be used in constructor of MultiDataObject to register all the important files, that could belong to this data object. As example, our XMLDataObject, tries to locate its xmlinfo file and then do register it

Parameters:
fo - the file to register (can be null, then the action is ignored)
Returns:
the entry associated to this file object (returns primary entry if the fo is null)

getPrimaryEntry

public final MultiDataObject.Entry getPrimaryEntry()
Get the primary entry.
Returns:
the entry

secondaryEntries

public final Set secondaryEntries()
Get secondary entries.
Returns:
immutable set of MultiDataObject.Entrys

findSecondaryEntry

public final MultiDataObject.Entry findSecondaryEntry(FileObject fo)
For a given file, find the associated secondary entry.
Parameters:
fo - file object
Returns:
the entry associated with the file object, or null if there is no such entry

takePrimaryFileLock

protected FileLock takePrimaryFileLock()
                                throws IOException
Description copied from class: DataObject
Obtains lock for primary file.
Overrides:
takePrimaryFileLock in class DataObject
Following copied from class: org.openide.loaders.DataObject
Returns:
the lock
Throws:
IOException - if taking the lock fails

handleCopy

protected DataObject handleCopy(DataFolder df)
                         throws IOException
Copies primary and secondary files to new folder. May ask for user confirmation before overwriting.
Overrides:
handleCopy in class DataObject
Parameters:
df - the new folder
Returns:
data object for the new primary
Throws:
IOException - if there was a problem copying
UserCancelException - if the user cancelled the copy

handleDelete

protected void handleDelete()
                     throws IOException
Description copied from class: DataObject
Delete this object (implemented by subclasses).
Overrides:
handleDelete in class DataObject
Following copied from class: org.openide.loaders.DataObject
Throws:
IOException - if an error occures

handleRename

protected FileObject handleRename(String name)
                           throws IOException
Description copied from class: DataObject
Rename this object (implemented in subclasses).
Overrides:
handleRename in class DataObject
Following copied from class: org.openide.loaders.DataObject
Parameters:
name - name to rename the object to
Returns:
new primary file of the object
Throws:
IOException - if an error occures

handleMove

protected FileObject handleMove(DataFolder df)
                         throws IOException
Moves primary and secondary files to a new folder. May ask for user confirmation before overwriting.
Overrides:
handleMove in class DataObject
Parameters:
df - the new folder
Returns:
the moved primary file object
Throws:
IOException - if there was a problem moving
UserCancelException - if the user cancelled the move

handleCreateFromTemplate

protected DataObject handleCreateFromTemplate(DataFolder df,
                                              String name)
                                       throws IOException
Description copied from class: DataObject
Create a new data object from template (implemented in subclasses). This method should copy the content of the template to the destination folder and assign a new name to the new object.
Overrides:
handleCreateFromTemplate in class DataObject
Following copied from class: org.openide.loaders.DataObject
Parameters:
df - data folder to create object in
name - name to give to the new object (or null if the name should be chosen according to the template)
Returns:
the new data object
Throws:
IOException - if an error occured

setCookieSet

protected final void setCookieSet(CookieSet s)
Deprecated. just use getCookieSet().add(...) instead

Set the set of cookies. To the provided cookie set a listener is attached, and any change to the set is propagated by firing a change on DataObject.PROP_COOKIE.
Parameters:
s - the cookie set to use

getCookieSet

protected final CookieSet getCookieSet()
Get the set of cookies. If the set had been previously set by setCookieSet(org.openide.nodes.CookieSet), that set is returned. Otherwise an empty set is returned.
Returns:
the cookie set (never null)

getCookie

public Node.Cookie getCookie(Class type)
Look for a cookie in the current cookie set matching the requested class.
Overrides:
getCookie in class DataObject
Parameters:
type - the class to look for
Returns:
an instance of that class, or null if this class of cookie is not supported


Built on December 12 2001.  |  Portions Copyright 1997-2001 Sun Microsystems, Inc. All rights reserved.