EA_GetCompartmentData

This event occurs when Enterprise Architect is instructed to redraw an element. It requests that the Add-In provide the data to populate the element's compartment.

Syntax

Function EA_GetCompartmentData (Repository As EA.Repository, sCompartment As String, sGUID As String, oType As EA.ObjectType) As Variant

The EA_QueryAvailableCompartments function syntax contains these parameters.

Parameter

Type

See also

oType

ObjectType

Direction: IN

Description: The type of the element for which data is being requested.

Repository

EA.Repository

Direction: IN

Description: An EA.Repository object representing the currently open Enterprise Architect model. Poll its members to retrieve model data and user interface status information.

Repository Class

sCompartment

String

Direction: IN

Description: The name of the compartment for which data is being requested.

sGUID

String

Direction: IN

Description: The GUID of the element for which data is being requested.

Return Value

A variant containing a formatted string. The format is illustrated in this example:

Example

Function EA_GetCompartmentData(Repository As EA.Repository, sCompartment As String, sGUID As String, oType As EA.ObjectType) As Variant

If Repository Is Nothing Then

Exit Function

End If

Dim sCompartmentData As String

Dim oXML As MSXML2.DOMDocument

Dim Nodes As MSXML2.IXMLDOMNodeList

Dim Node1 As MSXML2.IXMLDOMNode

Dim Node As MSXML2.IXMLDOMNode

Dim sData As String

sCompartmentData = ""

Set oXML = New MSXML2.DOMDocument

sData = ""

On Error GoTo ERR_GetCompartmentData

oXML.loadXML (Repository.GetTreeXMLByGUID(sGUID))

Set Node1 = oXML.selectSingleNode("//ModelItem")

If Node1 Is Nothing Then

Exit Function

End If

sCompartmentData = sCompartmentData + "Name=" + sCompartment + ";"

sCompartmentData = sCompartmentData + "OwnerGUID=" + sGUID + ";"

sCompartmentData = sCompartmentData + "Options=SkipIfOnDiagram&_eq_^1&_sc_^"

Select Case sCompartment

Case "parts"

Set Nodes = Node1.selectNodes("ModelItem( @Metatype=""Part"" ) ")

For Each Node In Nodes

sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

Next

Case "ports"

Set Nodes = Node1.selectNodes("ModelItem( @Metatype=""Port"" ) ")

For Each Node In Nodes

sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

Next

End Select

' If there's no data to display, then don't return any compartment data

If sData <> "" Then

sCompartmentData = sCompartmentData + "CompartmentData=" + sData + ";"

Else

sCompartmentData = ""

End If

EA_GetCompartmentData = sCompartmentData

Exit Function

ERR_GetCompartmentData:

EA_GetCompartmentData = ""

End Function