Class PropertySetMixin

java.lang.Object
com.sun.star.lib.uno.helper.PropertySetMixin

public final class PropertySetMixin extends Object
A helper mixin to implement certain UNO interfaces related to property set handling on top of the attributes of a given UNO interface type.

A client will mix in this class by keeping a reference to an instance of this class, and forwarding all methods of (a subset of the interfaces) com.sun.star.beans.XPropertySet, com.sun.star.beans.XFastPropertySet, and com.sun.star.beans.XPropertyAccess to it.

Client code should not use the monitors associated with instances of this class, as they are used for internal purposes.

Since:
UDK 3.2
  • Constructor Details

    • PropertySetMixin

      public PropertySetMixin(com.sun.star.uno.XComponentContext context, com.sun.star.uno.XInterface object, Type type, String[] absentOptional)
      The constructor.
      Parameters:
      context - the component context used by this instance; must not be null, and must supply the com.sun.star.reflection.theCoreReflection and com.sun.star.reflection.theTypeDescriptionManager singletons
      object - the client UNO object into which this instance is mixed in; must not be null, and must support the given type
      type - the UNO interface type whose attributes are mapped to properties; must not be null, and must represent a UNO interface type
      absentOptional - a list of optional properties that are not present, and should thus not be visible via com.sun.star.beans.XPropertySet.getPropertySetInfo, com.sun.star.beans.XPropertySet.addPropertyChangeListener, com.sun.star.beans.XPropertySet.removePropertyChangeListener, com.sun.star.beans.XPropertySet.addVetoableChangeListener, and com.sun.star.beans.XPropertySet.removeVetoableChangeListener; null is treated the same as an empty list; if non-null, the given array must not be modified after it is passed to this constructor. For consistency reasons, the given absentOptional should only contain the names of attributes that represent optional properties that are not present (that is, the attribute getters and setters always throw a com.sun.star.beans.UnknownPropertyException), and should contain each such name only once. If an optional property is not present (that is, the corresponding attribute getter and setter always throw a com.sun.star.beans.UnknownPropertyException) but is not contained in the given absentOptional, then it will be visible via com.sun.star.beans.XPropertySet.getPropertySetInfo as a com.sun.star.beans.Property with a set com.sun.star.beans.PropertyAttribute.OPTIONAL. If the given object does not implement com.sun.star.beans.XPropertySet, then the given absentOptional is effectively ignored and can be null or empty.
  • Method Details

    • prepareSet

      public void prepareSet(String propertyName, Object oldValue, Object newValue, PropertySetMixin.BoundListeners bound) throws com.sun.star.beans.PropertyVetoException
      A method used by clients when implementing UNO interface type attribute setter functions.

      First, this method checks whether this instance has already been disposed (see dispose()), and throws a com.sun.star.beans.DisposedException if applicable. For a constrained attribute (whose setter can explicitly raise com.sun.star.beans.PropertyVetoException), this method notifies any com.sun.star.beans.XVetoableChangeListeners. For a bound attribute, this method modifies the passed-in bound so that it can afterwards be used to notify any com.sun.star.beans.XPropertyChangeListeners. This method should be called before storing the new attribute value, and bound.notifyListeners() should be called exactly once after storing the new attribute value (in case the attribute is bound; otherwise, calling bound.notifyListeners() is ignored). Furthermore, bound.notifyListeners() and this method have to be called from the same thread.

      Parameters:
      propertyName - the name of the property (which is the same as the name of the attribute that is going to be set)
      oldValue - the property value corresponding to the old attribute value. This is only used as com.sun.star.beans.PropertyChangeEvent.OldValue, which is rather useless, anyway (see “Using the Observer Pattern” in OpenOffice.org Coding Guidelines). If the attribute that is going to be set is neither bound nor constrained, or if com.sun.star.beans.PropertyChangeEvent.OldValue should not be set, Any.VOID can be used instead.
      newValue - the property value corresponding to the new attribute value. This is only used as com.sun.star.beans.PropertyChangeEvent.NewValue, which is rather useless, anyway (see “Using the Observer Pattern” in OpenOffice.org Coding Guidelines), unless the attribute that is going to be set is constrained. If the attribute that is going to be set is neither bound nor constrained, or if it is only bound but com.sun.star.beans.PropertyChangeEvent.NewValue should not be set, Any.VOID can be used instead.
      bound - a reference to a fresh PropertySetMixin.BoundListeners instance (which has not been passed to this method before, and on which PropertySetMixin.BoundListeners.notifyListeners() has not yet been called); may only be null if the attribute that is going to be set is not bound
      Throws:
      com.sun.star.beans.PropertyVetoException - if a vetoable listener throws it.
    • prepareSet

      public void prepareSet(String propertyName, PropertySetMixin.BoundListeners bound)
      A simplified version of prepareSet(String, Object, Object, PropertySetMixin.BoundListeners).

      This method is useful for attributes that are not constrained.

      Parameters:
      propertyName - the name of the property (which is the same as the name of the attribute that is going to be set)
      bound - a reference to a fresh PropertySetMixin.BoundListeners instance (which has not been passed to this method before, and on which PropertySetMixin.BoundListeners.notifyListeners() has not yet been called); may only be null if the attribute that is going to be set is not bound
    • dispose

      public void dispose()
      Marks this instance as being disposed.

      See com.sun.star.lang.XComponent for the general concept of disposing UNO objects. On the first call to this method, all registered listeners (com.sun.star.beans.XPropertyChangeListeners and com.sun.star.beans.XVetoableChangeListeners) are notified of the disposing source. Any subsequent calls to this method are ignored.

    • getPropertySetInfo

      public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
      Implements com.sun.star.beans.XPropertySet.getPropertySetInfo.
      Returns:
      See com.sun.star.beans.XPropertySet
    • setPropertyValue

      public void setPropertyValue(String propertyName, Object value) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.setPropertyValue.
      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      value - See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.beans.PropertyVetoException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.IllegalArgumentException
    • getPropertyValue

      public Object getPropertyValue(String propertyName) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.getPropertyValue.
      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      Returns:
      See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
    • addPropertyChangeListener

      public void addPropertyChangeListener(String propertyName, com.sun.star.beans.XPropertyChangeListener listener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.addPropertyChangeListener.

      If a listener is added more than once, it will receive all relevant notifications multiple times.

      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      listener - See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
    • removePropertyChangeListener

      public void removePropertyChangeListener(String propertyName, com.sun.star.beans.XPropertyChangeListener listener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.removePropertyChangeListener.
      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      listener - See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
    • addVetoableChangeListener

      public void addVetoableChangeListener(String propertyName, com.sun.star.beans.XVetoableChangeListener listener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.addVetoableChangeListener.

      If a listener is added more than once, it will receive all relevant notifications multiple times.

      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      listener - See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
    • removeVetoableChangeListener

      public void removeVetoableChangeListener(String propertyName, com.sun.star.beans.XVetoableChangeListener listener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertySet.removeVetoableChangeListener.
      Parameters:
      propertyName - See com.sun.star.beans.XPropertySet
      listener - See com.sun.star.beans.XPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertySet
    • setFastPropertyValue

      public void setFastPropertyValue(int handle, Object value) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XFastPropertySet.setFastPropertyValue.
      Parameters:
      handle - See com.sun.star.beans.XFastPropertySet
      value - See com.sun.star.beans.XFastPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XFastPropertySet
      com.sun.star.beans.PropertyVetoException - See com.sun.star.beans.XFastPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XFastPropertySet
      com.sun.star.lang.IllegalArgumentException
    • getFastPropertyValue

      public Object getFastPropertyValue(int handle) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XFastPropertySet.getFastPropertyValue.
      Parameters:
      handle - See com.sun.star.beans.XFastPropertySet
      Returns:
      See com.sun.star.beans.XFastPropertySet
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XFastPropertySet
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XFastPropertySet
    • getPropertyValues

      public com.sun.star.beans.PropertyValue[] getPropertyValues()
      Implements com.sun.star.beans.XPropertyAccess.getPropertyValues.
      Returns:
      See com.sun.star.beans.XPropertyAccess
    • setPropertyValues

      public void setPropertyValues(com.sun.star.beans.PropertyValue[] props) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
      Implements com.sun.star.beans.XPropertyAccess.setPropertyValues.
      Parameters:
      props - See com.sun.star.beans.XPropertyAccess
      Throws:
      com.sun.star.beans.UnknownPropertyException - See com.sun.star.beans.XPropertyAccess
      com.sun.star.beans.PropertyVetoException - See com.sun.star.beans.XPropertyAccess
      com.sun.star.lang.WrappedTargetException - See com.sun.star.beans.XPropertyAccess
      com.sun.star.lang.IllegalArgumentException