Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference
11g Release 1 (11.1.1.4.0)

E13403-05

oracle.ide.model
Class ObservableFolder

java.lang.Object
  extended by oracle.ide.model.DefaultDisplayable
      extended by oracle.ide.model.DefaultElement
          extended by oracle.ide.model.DefaultFolder
              extended by oracle.ide.model.ObservableFolder
All Implemented Interfaces:
Displayable, Element, Folder, Subject, Dirtyable, Copyable
Direct Known Subclasses:
Workspaces

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.

See Also:
Subject

Field Summary
 
Fields inherited from class oracle.ide.model.DefaultFolder
_children
 
Constructor Summary
ObservableFolder()
           
 
Method Summary
 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.
 
Methods inherited from class oracle.ide.model.DefaultFolder
canAdd, canRemove, containsChild, copyToImpl, equalsImpl, getChildren, getIcon, mayHaveChildren, size
 
Methods inherited from class oracle.ide.model.DefaultElement
getAttributes, getData
 
Methods inherited from class oracle.ide.model.DefaultDisplayable
getLongLabel, getShortLabel, getToolTipText, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface oracle.ide.model.Element
getAttributes, getData
 
Methods inherited from interface oracle.ide.model.Displayable
getLongLabel, getShortLabel, getToolTipText, toString
 

Constructor Detail

ObservableFolder

public ObservableFolder()
Method Detail

copyTo

public java.lang.Object copyTo(java.lang.Object object)
Description copied from interface: Copyable
Copies the internal state of this 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.

Specified by:
copyTo in interface Copyable
Parameters:
object - 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.
Returns:
The object to which the state of 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.

isDirty

public boolean isDirty()
Description copied from interface: Dirtyable
True if the data in the object has been modified.

Specified by:
isDirty in interface Dirtyable
Returns:
true if the data in the object has been modified.

markDirty

public void markDirty(boolean dirty)
Description copied from interface: Dirtyable
Marks the data with the specified dirty state. This method is called markDirty(...) instead of setDirty(...) so that the JavaBeans Introspector will not mistakenly identify "dirty" as a JavaBean property.

Specified by:
markDirty in interface Dirtyable
Parameters:
dirty - If true, sets the object as being dirty; if false, sets the object as being up-to-date.

attach

public void attach(Observer observer)
Description copied from interface: Subject
Registers an observer interested in being notified when the internal state of the class implementing the Subject interface changes. Implementors should do nothing when the same observer is added more than once.

Specified by:
attach in interface Subject
Parameters:
observer - the Observer interested in change notification messages.

detach

public void detach(Observer observer)
Description copied from interface: Subject
Unregisters an observer that is not interested anymore in being notified when the internal state of the class implementing the Subject interface changes. Implementors should do nothing when the same observer is removed more than once.

Specified by:
detach in interface Subject
Parameters:
observer - the Observer disinterested in change notification messages.

notifyObservers

public void notifyObservers(java.lang.Object observed,
                            UpdateMessage change)
Description copied from interface: Subject
Notifies all observers that the state of the subject has changed.

Specified by:
notifyObservers in interface Subject
Parameters:
observed - the subject whose state has changed.
change - what changed.

add

public boolean add(Element element)
Description copied from class: DefaultFolder
Part of the Folder 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);

Specified by:
add in interface Folder
Overrides:
add in class DefaultFolder
See Also:
Folder.add(oracle.ide.model.Element)

remove

public boolean remove(Element element)
Description copied from class: DefaultFolder
Part of the Folder 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);

Specified by:
remove in interface Folder
Overrides:
remove in class DefaultFolder
Parameters:
element - The child object to remove.
See Also:
Folder.remove(Element)

removeAll

public void removeAll()
Description copied from interface: Folder
Removes all children from the folder.

Specified by:
removeAll in interface Folder
Overrides:
removeAll in class DefaultFolder

getListOfChildren

public java.util.List getListOfChildren()
Fulfills the public accessor part of the Folder contract.

Returns:
a List view of the child @{link Element}s contained by this ObservableFolder.

setListOfChildren

public void setListOfChildren(java.util.List list)
Fulfills the public accessor part of the 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.


Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference
11g Release 1 (11.1.1.4.0)

E13403-05

Copyright © 1997, 2011, Oracle. All rights reserved.