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)