# ComponentTreeItem

class `ComponentTreeItem` : public HPS::Sprocket

  The ComponentTreeItem class is a smart pointer which corresponds to an item or node in a tree object in a GUI toolkit, e.g., a TreeViewItem in WPF or an HTREEITEM in MFC. This class must be derived from to facilitate tree creation in the various GUI toolkits. It is used to represent items in a component or model browser.

  Public Functions

  virtual ComponentTreeItemPtr `AddChild`(Component const &in_component, ComponentTree::ItemType in_type) = 0

    This function is used to create a new ComponentTreeItem to be the child of this ComponentTreeItem. This function will be invoked if this ComponentTreeItem has children and Expand has been invoked on it. This function should contain any necessary calls to GUI toolkits to create the appropriate GUI elements. Additionally, since this function requires the creation of a derived ComponentTreeItem, that derived ComponentTreeItem should use the base constructor which takes the same arguments this function.

    Parameters: | in_component – The Component for this ComponentTreeItem. Should be passed to as the corresponding argument to the base constructor. in_type – The type for this ComponentTreeItem. Should be passed to as the corresponding argument to the base constructor.
    Returns: | A newly created object derived from ComponentTreeItem.

  virtual void `Assign`(ComponentTreeItem const &in_that)

    Share the underlying smart-pointer of the ComponentTreeItem source.

    Parameters: | in_that – The ComponentTreeItem source of the assignment.
    Returns: | A reference to this ComponentTreeItem.

  virtual void `Collapse`()

    This function should be invoked when this ComponentTreeItem needs to collapse. If this function is overridden, the overriding function should invoke this base function. Additionally, this function will always release all children for this ComponentTreeItem when invoked.

  `ComponentTreeItem`()

    The default constructor creates an uninitialized ComponentTreeItem object. The Type() function will return Type::None.

  `ComponentTreeItem`(ComponentTreeItem &&in_that)

    The move constructor creates a ComponentTreeItem by transferring the underlying object of the rvalue reference to this ComponentTreeItem.

    Parameters: | in_that – An rvalue reference to a ComponentTreeItem to take the underlying object from.

  `ComponentTreeItem`(ComponentTreeItem const &in_that)

    The copy constructor creates a ComponentTreeItem object that shares the underlying smart-pointer of the source ComponentTreeItem.

    Parameters: | in_that – The source ComponentTreeItem to copy.

  `ComponentTreeItem`(ComponentTreePtr const &in_tree, CADModel const &in_cad_model)

    This constructor creates a ComponentTreeItem suitable for acting as a root in a ComponentTree. The CADModel provided to this constructor should be accessible from the Canvas and layer associated with the ComponentTree, otherwise an exception will be thrown.

    See also

    ComponentTree::SetRoot

    Parameters: | in_tree – The ComponentTree with which to associate this new root ComponentTreeItem. in_cad_model – The CADModel for this root ComponentTreeItem.

  `ComponentTreeItem`(ComponentTreePtr const &in_tree, Component const &in_component, ComponentTree::ItemType in_type)

    This constructor creates a ComponentTreeItem which is not suitable for acting as a root in a ComponentTree, but is suitable to be a ComponentTreeItem under the root of the ComponentTree. This constructor should be the one invoked in the overridden AddChild function.

    See also

    AddChild

    Parameters: | in_tree – The ComponentTree with which to associate this new ComponentTreeItem. in_component – The Component for this ComponentTreeItem. This value should come from the corresponding argument to AddChild. in_type – The type of this ComponentTreeItem. This value should come from the corresponding argument to AddChild.

  bool `Equals`(ComponentTreeItem const &in_that) const

    Check if the source ComponentTreeItem points to the same underlying impl as this ComponentTreeItem.

    Parameters: | in_that – The source ComponentTreeItem to compare to this ComponentTreeItem.
    Returns: | true if the objects reference the same impl, false otherwise.

  virtual void `Expand`()

    This function should be invoked when this ComponentTreeItem needs to expand. If this function is overridden, the overriding function should invoke this base function. Additionally, this function will always repopulate the children for this ComponentTreeItem when invoked.

  Component `GetComponent`() const

    Gets the Component for this ComponentTreeItem. The type of the Component depends on the ComponentTree::ItemType for this ComponentTreeItem.

    Returns: | The Component for this ComponentTreeItem.

  ComponentTree::ItemType `GetItemType`() const

    Gets the item type for this ComponentTreeItem. This is used to determine what type of data this ComponentTreeItem represents in the ComponentTree.

    Returns: | The item type for this ComponentTreeItem.

  ComponentPath `GetPath`() const

    Gets the ComponentPath corresponding to this ComponentTreeItem.

    Returns: | The ComponentPath corresponding to this ComponentTreeItem.

  UTF8 `GetTitle`() const

    Gets the title for this ComponentTreeItem. This is the text that should be displayed for this ComponentTreeItem in the ComponentTree.

    Returns: | The title for this ComponentTreeItem.

  ComponentTreePtr `GetTree`() const

    Gets the ComponentTree associated with this ComponentTreeItem. This provides a means of accessing the derived ComponentTree by this ComponentTreeItem if necessary.

    Returns: | The ComponentTree associated with this ComponentTreeItem.

  bool `HasChildren`() const

    Indicates whether this ComponentTreeItem has any children.

    Returns: | Whether this ComponentTreeItem has any children.

  void `Hide`()

    This function will cause this ComponentTreeItem to be hidden if it isn’t already. This will cause this item to be marked as hidden if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes a hide is nonsensical. In this case, no hide will be performed. If activated, this forces the visibility of the associated ComponentPath and all components under this path to invisible. Any visibility changes made previously at or below this path are flushed. When performing a highlight in combination with this function the highlight must be applied with Drawing::Overlay::InPlace to display properly. See this section for limitations and details on managing component visibility.

    See also

    OnHide

    See also

    Show

    See also

    Isolate

    See also

    ResetVisibility

    See also

    IsHidden

    See also

    ComponentPath::Hide

    See also

    Programming Guide: Managing Component Visibility

  void `Highlight`(HighlightOptionsKit const &in_highlight_options)

    This function will cause this ComponentTreeItem to be highlighted with the options specified. If the options requested is not part of the associated ComponentTree highlight options, it will be added to them. This will cause this item to be marked as highlighted if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes a highlight is nonsensical. In this case, no highlight will be performed.

    See also

    OnHighlight

    Parameters: | in_highlight_options – The highlight options used during highlighting

  void `Highlight`(size_t in_highlight_options_index = 0)

    This function will cause this ComponentTreeItem to be highlighted with the nth option specified in the associated ComponentTree. This will cause this item to be marked as highlighted if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes a highlight is nonsensical. In this case, no highlight will be performed.

    See also

    OnHighlight

    Parameters: | in_higlight_options_index – The index in the highlight options array held by the associated ComponentTree. Defaults to 0.

  bool `IsExpanded`() const

    Indicates whether this ComponentTreeItem is currently expanded.

    Returns: | Whether this ComponentTreeItem is currently expanded.

  bool `IsHidden`() const

    Indicates whether this ComponentTreeItem is currently hidden. This may mean that the Hide function on this ComponentTreeItem was invoked, or that the Component backing this ComponentTreeItem was hidden via ComponentPath::Hide or ComponentPath::Isolate.

    See also

    Hide

    See also

    Show

    See also

    Isolate

    See also

    ResetVisibility

    See also

    ComponentPath::Hide

    See also

    ComponentPath::Show

    See also

    ComponentPath::Isolate

    See also

    ComponentPath::ResetVisibility

    See also

    Programming Guide: Managing Component Visibility

    Note

    The state of this ComponentTreeItem may not yet mirror the state of the underlying ComponentPath as the notification is asynchronous. In order for this ComponentTreeItem to mirror the state of the underlying ComponentPath, a synchronous update needs to be performed on the associated view.

    Returns: | Whether this ComponentTreeItem is currently hidden.

  bool `IsHighlighted`() const

    Indicates whether this ComponentTreeItem is currently highlighted with the options specified in the associated ComponentTree. This may mean that the Highlight function on this ComponentTreeItem was invoked, or that the Component backing this ComponentTreeItem was highlighted by ComponentPath::Highlight.

    See also

    Highlight

    See also

    Unhighlight

    Note

    The state of this ComponentTreeItem may not yet mirror the state of the underlying ComponentPath as the notification is asynchronous. In order for this ComponentTreeItem to mirror the state of the underlying ComponentPath, a synchronous update needs to be performed on the associated view.

    Returns: | Whether this ComponentTreeItem is currently highlighted with the options specified in the associated ComponentTree.

  void `Isolate`()

    This function will cause this ComponentTreeItem to be isolated, i.e., all other items will be hidden and this item will be shown. This will cause this item to be marked as visible if it isn’t already, and all other items to be marked as hidden. Depending on the type of the ComponentTreeItem, sometimes an isolate is nonsensical. In this case, no isolate will be performed. When performing a highlight in combination with this function the highlight must be applied with Drawing::Overlay::InPlace to display properly. See this section for limitations and details on managing component visibility.

    See also

    OnHide

    See also

    OnShow

    See also

    Show

    See also

    Hide

    See also

    ResetVisibility

    See also

    IsHidden

    See also

    ComponentPath::Isolate

    See also

    Programming Guide: Managing Component Visibility

  inline virtual HPS::Type `ObjectType`() const

    This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

    Returns: | The declared type of the object in question, which may differ from the true, underlying type.

  virtual void `OnHide`()

    This function will be invoked when this ComponentTreeItem should be marked as hidden. This hiding may have come as a result of the Hide or Isolate function on a ComponentTreeItem being invoked, or due to ComponentPath::Hide being invoked on the Component backing this ComponentTreeItem. This function is meant to be overridden to allow one to change the appearance of a hidden ComponentTreeItem, e.g., by graying the text or changing an icon, to signify this new state. If this function is overridden, the overriding function should invoke this base function.

    See also

    Hide

  virtual void `OnHighlight`(HighlightOptionsKit const &in_options)

    This function will be invoked when this ComponentTreeItem should be marked as highlighted. This highlighting may have come as a result of the Highlight function on a ComponentTreeItem being invoked, or due to ComponentPath::Highlight being invoked on the Component backing this ComponentTreeItem. This function is meant to be overridden to allow one to change the appearance of a highlighted ComponentTreeItem, e.g., by bolding the text or changing an icon, to signify this new state. If this function is overridden, the overriding function should invoke this base function.

    Parameters: | in_options – The HighlightOptionsKit for the associated highlight.

  virtual void `OnShow`()

    This function will be invoked when this ComponentTreeItem should be marked as visible. This visibility may have come as a result of the Show or Isolate function on a ComponentTreeItem being invoked, or due to ComponentPath::Show or ComponentPath::Isolate being invoked on the Component backing this ComponentTreeItem. This function is meant to be overridden to allow one to change the appearance of a visible ComponentTreeItem, e.g., by no longer graying out the text or changing an icon, to signify this new state. If this function is overridden, the overriding function should invoke this base function.

    See also

    Show

  virtual void `OnUnhighlight`(HighlightOptionsKit const &in_options)

    This function will be invoked when this ComponentTreeItem should be marked as unhighlighted. This unhighlighting may have come as a result of the Unhighlight function on a ComponentTreeItem being invoked, or due to ComponentPath::Unhighlight being invoked on the Component backing this ComponentTreeItem. This function is meant to be overridden to allow one to change the appearance of a unhighlighted ComponentTreeItem, e.g., by no longer bolding the text or changing an icon, to signify this new state. If this function is overridden, the overriding function should invoke this base function.

    Parameters: | in_options – The HighlightOptionsKit for the associated unhighlight.

  bool `operator!=`(ComponentTreeItem const &in_that) const

    Check if the source ComponentTreeItem points to a different impl than this ComponentTreeItem.

    Parameters: | in_that – The source ComponentTreeItem to compare to this ComponentTreeItem.
    Returns: | true if the objects reference different impls, false otherwise.

  ComponentTreeItem &`operator=`(ComponentTreeItem &&in_that)

    The move assignment operator transfers the underlying object of the rvalue reference to this ComponentTreeItem.

    Parameters: | in_that – An rvalue reference to a ComponentTreeItem to take the underlying object from.
    Returns: | A reference to this ComponentTreeItem.

  ComponentTreeItem &`operator=`(ComponentTreeItem const &in_that)

    Share the underlying smart-pointer of the ComponentTreeItem source.

    Parameters: | in_that – The ComponentTreeItem source of the assignment.
    Returns: | A reference to this ComponentTreeItem.

  bool `operator==`(ComponentTreeItem const &in_that) const

    Check if the source ComponentTreeItem points to the same underlying impl as this ComponentTreeItem.

    Parameters: | in_that – The source ComponentTreeItem to compare to this ComponentTreeItem.
    Returns: | true if the objects reference the same impl, false otherwise.

  void `ReExpand`()

    Collapses this ComponentTreeItem and then re-expands the tree. It will try to preserve the original expansion state, however, if the underlying component structure has changed, the resulting expansion may look different.

  void `ResetVisibility`()

    This function will cause the visibility of this ComponentTreeItem to be reset to what is dictated by the associated CADModel & View. See this section for limitations and details on managing component visibility.

    See also

    Hide

    See also

    Show

    See also

    Isolate

    See also

    IsHidden

    See also

    ComponentPath::ResetVisibility

    See also

    Programming Guide: Managing Component Visibility

  void `Show`()

    This function will cause this ComponentTreeItem to be visible if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes a show is nonsensical. In this case, no show will be performed. If activated, this makes the selected path visibile but preserves the model-defined visibility of any components that exist underneath the associated ComponentPath. Any visibility changes made subsequently at or below this path are honored unless they are redundant. When performing a highlight in combination with this function the highlight must be applied with Drawing::Overlay::InPlace to display properly. See this section for limitations and details on managing component visibility.

    See also

    OnShow

    See also

    Hide

    See also

    Isolate

    See also

    ResetVisibility

    See also

    IsHidden

    See also

    ComponentPath::Show

    See also

    Programming Guide: Managing Component Visibility

  void `Unhighlight`(HighlightOptionsKit const &in_highlight_options)

    This function will cause this ComponentTreeItem to be unhighlighted with the options specified. If the options requested is not part of the associated ComponentTree highlight options, it will be added to them. This will cause this item to be marked as unhighlighted if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes a highlight is nonsensical. In this case, no unhighlight will be performed.

    See also

    OnUnhighlight

    Parameters: | in_highlight_options – The highlight options used during unhighlighting

  void `Unhighlight`(size_t in_highlight_options_index = 0)

    This function will cause this ComponentTreeItem to be unhighlighted with the nth option specified in the associated ComponentTree. This will cause this item to be marked as unhighlighted if it isn’t already. Depending on the type of the ComponentTreeItem, sometimes an unhighlight is nonsensical. In this case, no unhighlight will be performed.

    See also

    OnUnhighlight

    Parameters: | in_higlight_options_index – The index in the highlight options array held by the associated ComponentTree. Defaults to 0.

  virtual `~ComponentTreeItem`()

  Public Static Attributes

  static const HPS::Type `staticType` = HPS::Type::ComponentTreeItem

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Visualize Desktop in your own language, or choose a sample question below to start a conversation:

What is HOOPS Visualize Desktop?
What are the latest release notes for HOOPS Visualize Desktop?
How do I start evaluating HOOPS Visualize Desktop?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...