+ /// Searches the feature by interactive object
+ /// \param theIO an interactive object
+ /// \return feature the feature or NULL if it not visualized
+ ObjectPtr getObject(const AISObjectPtr& theIO) const;
+ ObjectPtr getObject(const Handle(AIS_InteractiveObject)& theIO) const;
+
+ /// Deactivates the given object (not allow selection)
+ void deactivate(ObjectPtr theFeature);
+
+ /// Activates the given object (it can be selected)
+ /// \param theModes - modes on which it has to be activated (can be empty)
+ void activate(ObjectPtr theFeature, const QIntList& theModes);
+
+ /// Returns true if the given object can be selected
+ bool isActive(ObjectPtr theObject) const;
+
+ /// Activates in local context displayed outside of the context.
+ /// \param theModes - modes on which it has to be activated (can be empty)
+ void activateObjectsOutOfContext(const QIntList& theModes);
+
+ /// Activates in local context displayed outside of the context.
+ void deactivateObjectsOutOfContext();
+
+ /// Sets display mode for the given object if this object is displayed
+ void setDisplayMode(ObjectPtr theObject, DisplayMode theMode, bool toUpdate = true);
+
+ /// Returns current display mode for the given object.
+ /// If object is not displayed then returns NoMode.
+ DisplayMode displayMode(ObjectPtr theObject) const;
+
+
+ int objectsCount() const { return myResult2AISObjectMap.size(); }
+
+ protected: