public class ObservableFolder extends DefaultFolder implements Copyable, Dirtyable, Subject
ObservableFolder is a complete, default implementation
  of the Folder and Subject interfaces.  This is a
  convenient starting point for the implementation of data classes
  which can be integrated with the IDE framework.Subject_children| Constructor and Description | 
|---|
ObservableFolder()  | 
| Modifier and Type | Method and Description | 
|---|---|
boolean | 
add(Element element)
Part of the  
Folder interface. | 
void | 
attach(Observer observer)
Registers an observer interested in being notified when the internal
 state of the class implementing the  
Subject interface
 changes. | 
java.lang.Object | 
copyTo(java.lang.Object object)
Copies the internal state of  
this object to the
  specified copy. | 
void | 
detach(Observer observer)
Unregisters an observer that is not interested anymore in being notified
 when the internal state of the class implementing the  
Subject
 interface changes. | 
java.util.List | 
getListOfChildren()
Fulfills the public accessor part of the  
Folder
  contract. | 
boolean | 
isDirty()
True if the data in the object has been modified. 
 | 
void | 
markDirty(boolean dirty)
Marks the data with the specified dirty state. 
 | 
void | 
notifyObservers(java.lang.Object observed,
               UpdateMessage change)
Notifies all observers that the state of the subject has changed. 
 | 
boolean | 
remove(Element element)
Part of the  
Folder interface. | 
void | 
removeAll()
Removes all children from the folder. 
 | 
void | 
setListOfChildren(java.util.List list)
Fulfills the public accessor part of the  
Folder
  contract. | 
canAdd, canRemove, containsChild, copyToImpl, equalsImpl, getChildren, getIcon, mayHaveChildren, sizegetAttributes, getDatagetLongLabel, getShortLabel, getToolTipText, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetAttributes, getDatagetLongLabel, getShortLabel, getToolTipText, toStringpublic java.lang.Object copyTo(java.lang.Object object)
Copyablethis object to the
  specified copy.  If copy is
  null, then this method should create a new instance
  of this class and proceed to copy the internal state
  to the newly created object.  Generally, only the persistent
  state of the object should be copied, but whether or not it is
  appropriate to copy transient properties is at the discretion
  of the individual implementor.
  Regardless of whether the copy occurs to an existing object or to
  a newly created object, the return value is object to which
  this object's state was copied.
  There is a standard implementation pattern for the
  copyTo method that helps avoid problems that arise
  when a Copyable object is subclassed.  The pattern
  is:
    public Object copyTo( Object target )
    {
      final <this_class> copy =
        target != null ? (<this_class>) target : new <this_class>();
      copyToImpl( copy );
      return copy;
    }
    protected final void copyToImpl( <this_class> copy )
    {
      super.copyToImpl( copy );  //  if necessary
      //  put code here for copying the properties of <this_class>
    }
  
  The parameter passed into the copyToImpl method is
  the same type of this class.  The responsibility of
  copyToImpl is to copy the state of this
  class through direct access of the fields.  The
  copyToImpl method should not use getters and setters
  since these may be overridden, causing the state of
  this class to be incompletely copied.copyTo in interface Copyableobject - The target object to which the state of
  this object should be copied.  If target
  is null, then the copyTo method will
  return a new instance of this class.this
  object was copied.  If the target was
  non-null, then the return value is the same as the
  target object that was passed in; otherwise, the
  return value is a new instance of this class.public boolean isDirty()
Dirtyablepublic void markDirty(boolean dirty)
DirtyablemarkDirty(...) instead of
  setDirty(...) so that the JavaBeans
  Introspector will not
  mistakenly identify "dirty" as a JavaBean property.public void attach(Observer observer)
SubjectSubject interface
 changes.
 Implementors should do nothing when the same observer is added more
 than once.public void detach(Observer observer)
SubjectSubject
 interface changes.
 Implementors should do nothing when the same observer is removed more
 than once.public void notifyObservers(java.lang.Object observed,
                   UpdateMessage change)
SubjectnotifyObservers in interface Subjectobserved - the subject whose state has changed.change - what changed.public boolean add(Element element)
DefaultFolderFolder interface.  The specified Element
  is added to the end of the child list.  However, if the
  Element is null, this method does nothing.
  In order for the UI to get updated correctly, an appropriate
  UpdateMessage will need to
  be sent to Observers of the
  DefaultFolder.  The policy in the IDE is that the class
  that changes the state of an object is responsible for firing the
  UpdateMessages for those
  changes.  UpdageMessages
  are not fired by the changed object itself.
  For a single UpdateMessage
  corresponding to DefaultFolder.add(Element), you can fire the
  UpdateMessage using code
  like:
  
    UpdateMessage.fireChildAdded(folder, newlyAddedChild);
  add in interface Folderadd in class DefaultFolderFolder.add(oracle.ide.model.Element)public boolean remove(Element element)
DefaultFolderFolder interface.  The specified Element
  is removed from the child list.  However, if the Element is
  null, this method does nothing.  If the Element
  occurs more than once in the child list, then only the first
  instance is removed.
  In order for the UI to get updated correctly, an appropriate
  UpdateMessage will need to
  be sent to Observers of the
  DefaultFolder.  The policy in the IDE is that the class
  that changes the state of an object is responsible for firing the
  UpdateMessages for those
  changes.  UpdateMessages
  are not fired by the changed object itself.
  For a single UpdateMessage
  corresponding to DefaultFolder.remove(Element), you can fire the
  UpdateMessage using code
  like:
  
    UpdateMessage.fireChildRemoved(folder, removedChild);
  remove in interface Folderremove in class DefaultFolderelement - The child object to remove.Folder.remove(Element)public void removeAll()
FolderremoveAll in interface FolderremoveAll in class DefaultFolderpublic java.util.List getListOfChildren()
Folder
  contract.List view of the child @{link Element}s contained
  by this ObservableFolder.public void setListOfChildren(java.util.List list)
Folder
  contract.
  Sets the child list of the ObservableFolder instance
  to match the specified List.  Only objects in the
  List that can be cast to Element are added.  The
  implementation uses the DefaultFolder.add(Element) method
  to add the child to the list, so that subclass implementations can
  override DefaultFolder.add(Element) without having to also
  override this method.