+ virtual bool eventFilter(QObject* , QEvent* );
+
+ /// The methiod called when widget is deactivated
+ virtual void deactivate();
+
+ /// Set the given wrapped value to the current widget
+ /// This value should be processed in the widget according to the needs
+ /// \param theValues the wrapped selection values
+ /// \param thePosition an index in the list of values, the values should be get from the index
+ virtual bool setSelection(const QList<ModuleBase_ViewerPrs>& theValues, int& thePosition);
+
+ /// Fills the attribute with the value of the selected owner
+ /// \param theOwner a selected owner
+ virtual bool setSelectionCustom(const ModuleBase_ViewerPrs& thePrs);
+
+ public slots:
+ /// Slot is called on selection type changed
+ void onSelectionTypeChanged();
+
+ /// Slot is called on selection changed
+ virtual void onSelectionChanged();
+
+protected slots:
+ /// Slot for copy command in a list pop-up menu
+ void onCopyItem();
+
+ /// Slot is called on selection of list of selected items
+ void onListSelection();
+
+ protected:
+ /// The methiod called when widget is activated
+ virtual void activateCustom();
+
+ /// Saves the internal parameters to the given feature
+ /// \return True in success
+ virtual bool storeValueCustom() const;
+
+ /// Creates a backup of the current values of the attribute
+ /// It should be realized in the specific widget because of different
+ /// parameters of the current attribute
+ virtual void storeAttributeValue();
+
+ /// Creates a backup of the current values of the attribute
+ /// It should be realized in the specific widget because of different
+ /// parameters of the current attribute
+ /// \param theValid a boolean flag, if restore happens for valid parameters
+ virtual void restoreAttributeValue(const bool theValid);
+
+ /// Set current shape type for selection
+ void setCurrentShapeType(const TopAbs_ShapeEnum theShapeType);
+
+ /// Start shape selection
+ /// \param isActivated a state whether the shape is activated or deactivated in selection
+ void activateShapeSelection(const bool isActivated);
+
+ /// Return the attribute values wrapped in a list of viewer presentations
+ /// \return a list of viewer presentations, which contains an attribute result and
+ /// a shape. If the attribute do not uses the shape, it is empty
+ QList<ModuleBase_ViewerPrs> getAttributeSelection() const;
+
+ protected:
+ /// Update selection list
+ void updateSelectionList(AttributeSelectionListPtr);
+
+ /// List control
+ QListWidget* myListControl;
+
+ /// Combobox of types
+ QComboBox* myTypeCombo;
+
+ //TODO: Move into the base of selectors
+ ModuleBase_IWorkshop* myWorkshop;
+
+ /// Provides correspondance between Result object and its shape
+ typedef QPair<ResultPtr, GeomShapePtr> GeomSelection;
+
+ /// An action for pop-up menu in a list control
+ QAction* myCopyAction;
+
+ /// backup parameters of the model attribute. The class processes three types of attribute:
+ /// Reference, RefAttr and Selection. Depending on the attribute type, only the attribute parameter
+ /// values are reserved in the backup
+ /// Variable of selection type
+ std::string mySelectionType;