Customize Context Toolbar (FL_BalloonCusto and FL_BalloonCustoMultiSel)

An opening ID is an entry point used to customize business logic. The FL_BalloonCusto business logic allows to customize commands in the context toolbar. To customize the context toolbar, you must declare the file containing the script to be executed in PLMBusinessLogicFLEditor.CATRuleExit:

<Script OpeningID="FL_BalloonCusto" Type="RFLPLMFunctionalInstance" 
ScriptName="RFLP_BalloonCusto_FctInstance"/>

In this example, the script RFLP_BalloonCusto_FctInstance.CATRule is executed each time a context toolbar is requested on an object type RFLPLMFunctionalInstance.

Note: For more information about customization by business rules, see Installation and Setup: Customize: Behavior: Data Setup: Customization by Business Rules.

This page discusses:

FL_BalloonCusto (or FL_BalloonCustoMultiSel)

General Information

This opening ID is invoked when the context toolbar is displayed on a function or a logical component.

This opening ID is used to customize the commands displayed in the context toolbar.

Important: To avoid impact on performances (too many server calls), the FL_BalloonCusto and FL_BalloonCustoMultiSel business rules must not be defined in Data Setup.

The table below provides you with information related to the definition of the Opening ID.

PLM Opening ID: FL_BalloonCusto
Customization intent:Execution
Execution context:Client

Input Objects

Input objects must be of the following type:ThisObject

Context Object Parameters

Parameter NameTypeRead/WriteComments
BalloonCmdListList Write

By default the attribute "BalloonCmdList" of the script parameters contains the description of the default context toolbar content defined by Functional & Logical Design.

To obtain this default context toolbar content:

let BalloonList (List)
set BalloonList = Parameters->GetAttributeObject("BalloonCmdList")

Samples

Here are few samples to illustrate this business logic.

Context Toolbar for Monoselection

To customize the context toolbar, you must declare the file containing the script to be executed in PLMBusinessLogicFLEditor.CATRuleExit:

<Script OpeningID="FL_BalloonCusto" Type="RFLPLMFunctionalInstance" 
ScriptName="RFLP_BalloonCusto_FctInstance"/>

In this example, the script RFLP_BalloonCusto_FctInstance.CATRule is executed each time a context toolbar is requested on an object type RFLPLMFunctionalInstance.

The script to customize context toolbar commands in case of mono-selection is linked to the opening Id - FL_BalloonCusto. It is available as long as a functional or logical component is UI activated.

The type indicated in the string Type=”” can be a ‘modeler’ type (RFLPLMFunctionalInstance, RFLPLMFunctionalReference…) or a ‘customized’ type (RFLPLMFunctionalInstanceDS, RFLPLMFunctionalReferenceDS for example).

The (modeler) types of object supported by this business logic for monoselection are:

  • Function (reference & instance)
  • Functional Flow Association
  • Functional Connection
  • Functional MUX/DEMUX
  • Logical Component (reference & instance)
  • Logical Port
  • Logical Connection
  • Logical MUX/DEMUX.

Contexte Toolbar for Multiselection

The context toolbar can also be customized for multiselection of functional or logical objects by using a script identified by the OpeningID - FL_BalloonCustoMultiSel.

The "Type" attribute can be included to specify if the current UI active object is of the given modeler/customization type. The "Type" value does not concern the selected objects but only the UI active object.

<Script OpeningID="FL_BalloonCustoMultiSel" Type="RFLPLMFunctionalInstance"
ScriptName="RFLP_BalloonCusto_MultiSel"/>

In this example the script RFLP_BalloonCusto_MultiSel.CATRule is executed to create a context toolbar on multiselection of components, only when an object of type RFLPLMFunctionalInstance is currently UI activated.

The “Type” attribute can be omitted to have the script launched every time without considering the type of the UI active object.

<Script OpeningID="FL_BalloonCustoMultiSel"
ScriptName="RFLP_BalloonCusto_MultiSel"/>

In this example the script RFLP_BalloonCusto_MultiSel.CATRule is executed to create a context toolbar on multiselection of components, without considering the type of the current UI active object.

Add Commands

Here is a script sample to add a new command.

let BalloonList(List)
let CurrentBalloonItem(List)
let CurrentCommand(String)
set BalloonList = Parameters->GetAttributeObject ("BalloonCmdList")
CurrentCommand = "CATPLMEditorInsertNewMuxRefCmdHdr"
CurrentBalloonItem.RemoveAll()
CurrentBalloonItem.Append(CurrentCommand)
BalloonList.Append(CurrentBalloonItem)
CurrentCommand = "CATPLMEditorInsertNewDemuxRefCmdHdr"
CurrentBalloonItem.RemoveAll()
CurrentBalloonItem.Append(CurrentCommand)
BalloonList.Append(CurrentBalloonItem)
Parameters->SetAttributeObject("BalloonCmdList", BalloonList)

Remove Standard Commands

Here is a script sample to remove standard new commands.

let BalloonList(List)
let CurrentBalloonItem(List)
let ItemSize(Integer)
let CurrentCommand(String)
let i(Integer)
set BalloonList = Parameters->GetAttributeObject ("BalloonCmdList")
i=BalloonList.Size()
for i while i>0
{
set CurrentBalloonItem = BalloonList.GetItem(i)
set ItemSize = CurrentBalloonItem.Size()
if (ItemSize == 1)
{
set CurrentCommand = CurrentBalloonItem.GetItem(1)
if (CurrentCommand == "CATPLMEditorInsertNewLogPortCmdHdr")
{
BalloonList.RemoveItem(i)
i = i-1
}
Parameters->SetAttributeObject("BalloonCmdList", BalloonList)

Add New Commands in Second Level

The following sample create a secondary level in a context toolbar (one level only).

let BalloonList(List)
let CurrentCommand(String)
let BalloonCommandGroup(List)
set BalloonList = Parameters->GetAttributeObject ("BalloonCmdList")
CurrentCommand = "CATPLMEditorInsertNewMuxRefCmdHdr"
BalloonCommandGroup.Append(CurrentCommand)
CurrentCommand = "CATPLMEditorInsertNewDemuxRefCmdHdr"
BalloonCommandGroup.Append(CurrentCommand)
BalloonList.Append(BalloonCommandGroup)
Parameters->SetAttributeObject("BalloonCmdList", BalloonList)

Manage Multiselection of Objects

Adding and removing commands in the context toolbar for multiselection is similar to monoselection. Use the following script sample to manage the multiple objects:

let SelectedObjectsList(List)
let i(Integer)
let CurrentObject(PLMEntity)
set SelectedObjectsList = Parameters->GetAttributeObject("SelectedObjects")
i= SelectedObjectsList.Size()
for i while i>0	
{
set CurrentObject = SelectedObjectsList.GetItem(i)
if(CurrentObject->IsSupporting("RFLPLMFunctionalInstance") == TRUE)
{
 […]
}
else if (CurrentObject->IsSupporting("RFLPLMFunctionalInstanceCusto1") == TRUE)
{
 […]
}
i = i-1
}