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
Modifier and TypeFieldDescriptionstatic final String
Constant ID of the property which is used in property names for smart listener events. -
Constructor Summary
ModifierConstructorDescriptionprotected
SmartPropertyChangeListener
(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig configuration) Constructs the smart property change listener. -
Method Summary
Modifier and TypeMethodDescriptionstatic SmartPropertyChangeListener
createSmartPropertyListener
(com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.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.static SmartPropertyChangeListener
createSmartPropertyListener
(Element target, PropertyChangeListener listener, SmartListenerConfig config) Factory method for creating a smart property change listener.static SmartPropertyChangeListener
createSmartPropertyListener
(Element target, PropertyChangeListener listener, Collection<SmartListenerConfig> configurations) Factory method for creating a smart property change listener.void
dispose()
Disposes and cleans up.void
Notifies the listener that event delivery has been restoredvoid
Notifies the listener that event delivery has been stopped temporarily.com.nomagic.uml2.ext.jmi.reflect.AbstractRefObject
static SmartListenerConfig
Deprecated.static SmartListenerConfig
mergeConfigurations
(Collection<SmartListenerConfig> configurations) Deprecated.void
toString()
-
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:
propertyChange
in 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.NonMaskedPropertyChangeListener
Notifies 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:
eventDeliveryStopped
in interfacecom.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener
-
eventDeliveryRestored
public void eventDeliveryRestored()Description copied from interface:com.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener
Notifies the listener that event delivery has been restored- Specified by:
eventDeliveryRestored
in interfacecom.dassault_systemes.modeler.foundation.events.NonMaskedPropertyChangeListener
-
SmartListenerConfig.mergeConfigurations(SmartListenerConfig, SmartListenerConfig)