Class SmartPropertyChangeListener
- All Implemented Interfaces:
 com.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener,com.nomagic.uml2.ext.jmi.NonMaskedPropertyChangeListener,PropertyChangeListener,EventListener
 SmartPropertyChangeListener is "smarter" than standard PropertyChangeListener,
 because it allows to listen not only to properties of a single model element,
 but also to related model element properties in the model.
 Given a model element, it is possible to listen to changes in the model which occur outside the element.
 These changes are related through a chain of element properties.
 
General idea: to create a smart listener for an element, you have to pass in a collection of smart listener configurations which describe how to reach the changes in the model which are of interest to you.
A single configuration contains the element's class and references to other elements which are of interest to us (a reference in this case is a property name).
 Remark: if you want to listen for a specific property of a single model element without listening to
 properties outside the model element, use BaseElement.addPropertyChangeListener(java.beans.PropertyChangeListener).
 
Example 1: listen to element owner's name
 Element element = ...; // some element
 SmartListenerConfig config = new SmartListenerConfig();
 config.listenTo(PropertyNames.NAME); // listen to element's name
 config.listenToNested(PropertyNames.OWNER).listenTo(PropertyNames.NAME); // listen to element owner's name
 // create the listener
 SmartPropertyChangeListener.createSmartPropertyListener(element, new PropertyChangeListener()
 {
     public void propertyChange(PropertyChangeEvent evt)
     {
         // change event comes here
     }
 }, config);
 
 Example 2: listen recursively to owner's name and "Is Abstract" property
 Element element = ...; // some element
 SmartListenerConfig config = new SmartListenerConfig();
 config.listenTo(PropertyNames.NAME);
 config.listenTo(PropertyNames.IS_ABSTRACT);
 config.listenTo(PropertyNames.OWNER, config);
 SmartPropertyChangeListener.createSmartPropertyListener(element, new PropertyChangeListener()
 {
     public void propertyChange(PropertyChangeEvent evt)
     {
         // change event comes here
     }
 }, config);
 - 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringConstant ID of the property which is used in property names for smart listener events. - 
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSmartPropertyChangeListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig configuration) Constructs the smart property change listener. - 
Method Summary
Modifier and TypeMethodDescriptionstatic SmartPropertyChangeListenercreateSmartPropertyListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.static SmartPropertyChangeListenercreateSmartPropertyListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, Collection<SmartListenerConfig> configurations) Factory method for creating a smart property change listener.static SmartPropertyChangeListenercreateSmartPropertyListener(Element target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.static SmartPropertyChangeListenercreateSmartPropertyListener(Element target, PropertyChangeListener listener, Collection<SmartListenerConfig> configurations) Factory method for creating a smart property change listener.voiddispose()Disposes and cleans up.voidNotifies the listener that event delivery has been restoredvoidNotifies the listener that event delivery has been stopped temporarily.com.nomagic.uml2.ext.jmi.reflect.AbstractRefObjectstatic SmartListenerConfigDeprecated.static SmartListenerConfigmergeConfigurations(Collection<SmartListenerConfig> configurations) Deprecated.voidtoString() 
- 
Field Details
- 
SMART_LISTENER_PROPAGATION_ID
Constant ID of the property which is used in property names for smart listener events.- See Also:
 
 
 - 
 - 
Constructor Details
- 
SmartPropertyChangeListener
protected SmartPropertyChangeListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig configuration) Constructs the smart property change listener.- Parameters:
 target- target to which smart listener is attached.listener- listener to which elements are being delegated.configuration- configuration to apply to the given element.
 
 - 
 - 
Method Details
- 
mergeConfigurations
@Deprecated public static SmartListenerConfig mergeConfigurations(SmartListenerConfig c1, SmartListenerConfig c2) Merges two configurations into a single configuration.- Parameters:
 c1- first configuration to mergec2- second configuration to merge- Returns:
 - merged configuration
 
 - 
mergeConfigurations
@Deprecated public static SmartListenerConfig mergeConfigurations(Collection<SmartListenerConfig> configurations) Deprecated.Merges given configurations into a single configuration.- Parameters:
 configurations- configurations to merge- Returns:
 - merged configuration
 
 - 
propertyChange
- Specified by:
 propertyChangein interfacePropertyChangeListener
 - 
dispose
public void dispose()Disposes and cleans up. - 
createSmartPropertyListener
public static SmartPropertyChangeListener createSmartPropertyListener(Element target, PropertyChangeListener listener, Collection<SmartListenerConfig> configurations) Factory method for creating a smart property change listener.- Parameters:
 target- element to which to attach the listener.listener- wrapped listener to which events should be delegated.configurations- configurations with which to configure the smart listener.- Returns:
 - created smart property change listener.
 
 - 
createSmartPropertyListener
public static SmartPropertyChangeListener createSmartPropertyListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, Collection<SmartListenerConfig> configurations) Factory method for creating a smart property change listener.- Parameters:
 target- target to which to attach the listener.listener- wrapped listener to which events should be delegated.configurations- configurations with which to configure the smart listener.- Returns:
 - created smart property change listener.
 
 - 
createSmartPropertyListener
public static SmartPropertyChangeListener createSmartPropertyListener(Element target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.- Parameters:
 target- target to which to attach the listener.listener- wrapped listener to which events should be delegated.config- configuration with which to configure the smart listener.- Returns:
 - created smart property change listener.
 
 - 
createSmartPropertyListener
public static SmartPropertyChangeListener createSmartPropertyListener(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.- Parameters:
 target- target to which to attach the listener.listener- wrapped listener to which events should be delegated.config- configuration with which to configure the smart listener.- Returns:
 - created smart property change listener.
 
 - 
getConfig
 - 
getTarget
public com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject getTarget() - 
getListener
 - 
toString
 - 
eventDeliveryStopped
public void eventDeliveryStopped()Description copied from interface:com.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListenerNotifies the listener that event delivery has been stopped temporarily. Changes may take place before event delivery is restored but events will not be delivered for these changes- Specified by:
 eventDeliveryStoppedin interfacecom.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener
 - 
eventDeliveryRestored
public void eventDeliveryRestored()Description copied from interface:com.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListenerNotifies the listener that event delivery has been restored- Specified by:
 eventDeliveryRestoredin interfacecom.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener
 
 - 
 
SmartListenerConfig.mergeConfigurations(SmartListenerConfig, SmartListenerConfig)