void PropertyGridContainerWidget::OnPropertiesGridUpdated() { if (PropertiesGridController::Instance()->GetActiveTreeNodesList().empty() == false) { // List of UI Controls is selected. BuildPropertiesGridList(); return; } // Build the Properties Grid based on the active control. const HierarchyTreeNode* activeTreeNode = PropertiesGridController::Instance()->GetActiveTreeNode(); if (activeTreeNode == NULL) { // Nothing is selected - cleanup the properties grid. CleanupPropertiesGrid(); return; } UIControl* activeControl = NULL; const HierarchyTreeControlNode* activeTreeControlNode = dynamic_cast<const HierarchyTreeControlNode*>(activeTreeNode); if (activeTreeControlNode) { activeControl = activeTreeControlNode->GetUIObject(); } BaseMetadata* metaData = GetActiveMetadata(activeTreeNode); BuildPropertiesGrid(activeControl, metaData, activeTreeNode->GetId()); }
void PropertyGridContainerWidget::BuildPropertiesGrid(UIControl* activeControl, BaseMetadata* metaData, HierarchyTreeNode::HIERARCHYTREENODEID activeNodeID) { METADATAPARAMSVECT params; params.push_back(BaseMetadataParams(activeNodeID, activeControl)); BuildPropertiesGrid(metaData, params); }
void PropertyGridContainerWidget::BuildCustomPropertiesGrid(HierarchyTreeScreenNode* screenNode) { if (!screenNode) { return; } BaseMetadata* customMetadata = MetadataFactory::Instance()->GetCustomMetadata(screenNode); if (!customMetadata) { return; } METADATAPARAMSVECT params; params.push_back(BaseMetadataParams(HierarchyTreeNode::HIERARCHYTREENODEID_EMPTY, NULL)); BuildPropertiesGrid(customMetadata, params); }
void PropertyGridContainerWidget::BuildPropertiesGridList() { // Need to understand which Metadata we need. Since multiple controls of different // type might be selected, we are looking for the most common Metadata. const HierarchyTreeController::SELECTEDCONTROLNODES &activeNodes = PropertiesGridController::Instance()->GetActiveTreeNodesList(); BaseMetadata* metaData = GetActiveMetadata(activeNodes); METADATAPARAMSVECT params; for (HierarchyTreeController::SELECTEDCONTROLNODES::const_iterator iter = activeNodes.begin(); iter != activeNodes.end(); iter ++) { const HierarchyTreeControlNode* controlNode = *iter; BaseMetadataParams controlNodeParam(controlNode->GetId(), controlNode->GetUIObject()); params.push_back(controlNodeParam); } BuildPropertiesGrid(metaData, params); }
void PropertyGridContainerWidget::OnPropertiesGridUpdated() { if (PropertiesGridController::Instance()->GetActiveTreeNodesList().empty() == false) { // List of UI Controls is selected. BuildPropertiesGridList(); return; } // Build the Properties Grid based on the active control. const HierarchyTreeNode* activeTreeNode = PropertiesGridController::Instance()->GetActiveTreeNode(); DVASSERT(activeTreeNode); // This code is executed when Screen/Platform are selected. UIControl* activeControl = NULL; const HierarchyTreeControlNode* activeTreeControlNode = dynamic_cast<const HierarchyTreeControlNode*>(activeTreeNode); if (activeTreeControlNode) { activeControl = activeTreeControlNode->GetUIObject(); } BaseMetadata* metaData = GetActiveMetadata(activeTreeNode); BuildPropertiesGrid(activeControl, metaData, activeTreeNode->GetId()); }