본문으로 건너뛰기

Context Menu에 새로운 메뉴 추가

VIZZARD Context Menu에 커스텀 메뉴를 추가하고 처리하는 방법을 소개합니다.


구현 절차

1. Plugin 기본 코드 구성

SHControl 구현 절차를 기준으로 Plugin 기본 코드를 구성합니다.


2. 메뉴에 할당할 ID 정의

private int MENU_VIEW_SP = 8000;
private int MENU_VIEW_ID = 8001;
private int MENU_MODEL_SP = 8002;
private int MENU_MODEL_ID = 8003;

3. VIZZARD 초기화 완료 시 Context Menu 추가

VIZZARD 프로그램 구동이 완료되면, 아래 이벤트에서 새로운 Context Menu를 추가합니다.

private void Connector_OnInitializedAppEvent(object sender, EventArgs e)
{
// 뷰어 영역에서 단일 모델 선택 시 메뉴 추가
Connector.AddContextMenu(
MENU_VIEW_SP,
CONTEXTMENU_TYPE.VIEW_SINGLE,
CONTEXTMENU_ITEMTYPE.SEPARATOR,
"",
true
);

Connector.AddContextMenu(
MENU_VIEW_ID,
CONTEXTMENU_TYPE.VIEW_SINGLE,
CONTEXTMENU_ITEMTYPE.CONTEXTMENU,
"커스텀 메뉴 #1",
true
);

// 뷰어 영역에서 복수 모델 선택 시 메뉴 추가
Connector.AddContextMenu(
MENU_MODEL_SP,
CONTEXTMENU_TYPE.VIEW_MULTI,
CONTEXTMENU_ITEMTYPE.SEPARATOR,
"",
true
);

Connector.AddContextMenu(
MENU_MODEL_ID,
CONTEXTMENU_TYPE.VIEW_MULTI,
CONTEXTMENU_ITEMTYPE.CONTEXTMENU,
"커스텀 메뉴 #2",
true
);
}

4. Context Menu 클릭 이벤트 등록

메뉴 선택 시 처리를 위해 이벤트를 추가합니다.

private void Connector_OnInitializedAppEvent(object sender, EventArgs e)
{
// 뷰어 영역에서 단일 모델 선택 시 메뉴 추가
Connector.AddContextMenu(MENU_VIEW_SP, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
Connector.AddContextMenu(MENU_VIEW_ID, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #1", true);

// 뷰어 영역에서 복수 모델 선택 시 메뉴 추가
Connector.AddContextMenu(MENU_MODEL_SP, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
Connector.AddContextMenu(MENU_MODEL_ID, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #2", true);

// Context Menu 클릭 이벤트 등록
Connector.OnContextMenuClickEvent += Connector_OnContextMenuClickEvent;
}

5. 메뉴 선택에 따른 처리

이벤트 발생 시, 선택된 메뉴 ID를 기준으로 기능을 분기 처리합니다.

private void Connector_OnContextMenuClickEvent(object sender, ContextMenuClickEventArgs e)
{
if (e.ID == MENU_VIEW_ID)
{
// 커스텀 메뉴 #1 처리
}
else if (e.ID == MENU_MODEL_ID)
{
// 커스텀 메뉴 #2 처리
}
}

Context Menu 적용 화면

Figure 1 - Context Menu 화면