#include "ormanip_association_applymanagerrule.h"
#include "ormanip_association_model.h"
#include "ormanip_association_manip.h"
FBRegisterApplyManagerRule( KAMRManipulatorAssociation,
"KAMRManipulatorAssociation",
"Apply Manager Rule for ORManip_Association context menu on ORModelItem object");
bool KAMRManipulatorAssociation::MenuBuild( FBAMMenu* pAMMenu, FBComponent* pFocusedObject)
{
if(pFocusedObject)
{
if( pFocusedObject->Is(ORModelItem::TypeInfo) )
{
mEditManipulatorId = pAMMenu->AddOption("Edit by manipulator association", -1, true);
mCloseManipulatorId = pAMMenu->AddOption("Close manipulator association", -1, true);
return true;
}
}
return false;
}
bool KAMRManipulatorAssociation::MenuAction( int pMenuId, FBComponent* pFocusedObject)
{
if (pFocusedObject && pFocusedObject->Is(ORModelItem::TypeInfo))
{
if (pMenuId == mEditManipulatorId || pMenuId == mCloseManipulatorId)
{
int lCnt = mSystem.Manipulators.GetCount();
for(
int i=0;
i<lCnt;
i++ )
{
if (mSystem.Manipulators[
i]->Name == ORMANIPASSOCIATION__LABEL)
{
ORManip_Association* lORManip_Association = (ORManip_Association*)mSystem.Manipulators[
i];
if (pMenuId == mEditManipulatorId)
{
lORManip_Association->Active = true;
lORManip_Association->AlwaysActive = true;
lORManip_Association->DefaultBehavior = false;
lORManip_Association->SetModel(pFocusedObject);
}
else if(pMenuId == mCloseManipulatorId)
{
lORManip_Association->Active = false;
lORManip_Association->AlwaysActive = false;
lORManip_Association->DefaultBehavior = true;
lORManip_Association->SetModel(
NULL);
}
return true;
}
}
}
}
return false;
}