+ /// Retunrs attribute, which should be validated. In default implementation,
+ /// this is an attribute of ID
+ /// \return an attribute
+ virtual AttributePtr attribute() const;
+
+ /// Sets the selection control visible and set the current widget as active in property panel
+ /// It leads to connect to onSelectionChanged slot
+ void activateSelectionControl();
+
+ /// Visualization of the current control or others in PP
+ /// \param theSelectionControl state whether the control should be shown/hidden
+ void setVisibleSelectionControl(const bool theSelectionControl);
+
+ /// Retunrs a list of possible shape types
+ /// \return a list of shapes
+ virtual QIntList shapeTypes() const;
+
+ /// Emits model changed info, updates the current control by selection change
+ /// \param theDone a state whether the selection is set
+ void updateOnSelectionChanged(const bool theDone);
+
+protected slots:
+ /// Slot which is called on selection event
+ virtual void onSelectionChanged();
+
+private:
+ /// Returns true if the selection mode is active. This is when composition feature has no
+ /// a sub-object and the attribute list is empty
+ /// \return boolean value
+ bool isSelectionMode() const;
+
+ /// Returns true if the current composite feature contains at least one sub-object
+ /// \return boolean value
+ bool hasSubObjects() const;