GEF에 ContextMenu 지원 추가
우클릭 메뉴를 추가하는 방법을 간단하게 소개한다.
우선 오른쪽 단추 메뉴를 지원하려면 메뉴를 관리하고 표시하는 데 사용되는 MenuManager 대상이 엔티티 대상에 추가되어야 한다. 이것은 JFace에서 MenuManager를 지원하는 것과 유사하다.
GEF에는 ContextMenuProvider라는 클래스가 있는데, 이것은ContextMenu에 대한 지원을 실현하는 데 사용됩니다.그래서 우리는 Menu에 있는 모든 Action을 정의하는 데 사용되는 Context Menu Provider의 하위 클래스를 실현해야 한다.예를 들면 다음과 같습니다.
public class ElementsContextMenuProvider extends ContextMenuProvider {
private ActionRegistry actionRegistry;
public ElementsContextMenuProvider(EditPartViewer viewer,ActionRegistry registry) {
super(viewer);
this.actionRegistry = registry;
}
@Override
public void buildContextMenu(IMenuManager menu) {
menu.add(actionRegistry.getAction(ActionFactory.REDO.getId()));
menu.add(actionRegistry.getAction(ActionFactory.UNDO.getId()));
}
}
이 클래스가 생기면 이 클래스를 Viewer에 설정합니다. configureGraphicalViewer () 는 다음과 같습니다.
ElementsContextMenuProvider contextMenu = new ElementsContextMenuProvider(
viewer, getActionRegistry());
viewer.setContextMenu(contextMenu);
이렇게 하면buildContextMenu () 방법에 추가된 모든 Action이 Menu에 표시됩니다.
그런 거 말고우리도 org를 이용할 수 있다.eclipse.ui.popupMenus 확장점을 사용하여 확장된 Action을 정의합니다.확장된 PopupMenu를 사용하려면 다음과 같이 Menu를 등록해야 합니다.
ElementsContextMenuProvider contextMenu = new ElementsContextMenuProvider(
viewer, getActionRegistry());
viewer.setContextMenu(contextMenu);
getSite().registerContextMenu(contextMenu, viewer);
그런 다음 다양한 유형의 EditPart 객체에 대해 PopupMenu 확장을 정의할 수 있습니다.그러나 주의해야 할 것은 다음과 같다: 관련이 없는 PopupMenu 항목을 추가했을 수도 있다!
가장 간단하게 필터링 규칙을 정의한 다음 Item을 마지막으로 표시하기 전에 필터링할 수 있습니다. 예를 들어 getItems()를 다시 쓰는 방법은 다음과 같습니다.
@Override
public IContributionItem[] getItems() {
IContributionItem[] items = super.getItems();
List<IContributionItem> remains = new ArrayList<IContributionItem>();
for(IContributionItem i:items){
if(isAllowed(i)){
remains.add(i);
}
}
return remains.toArray(new IContributionItem[0]);
}
private boolean isAllowed(IContributionItem itemToAdd) {
String id = itemToAdd.getId();
if(id==null){
return false;
}
if (!id.startsWith("com.tibco.cdc.liugang")
&& !id.equals(ActionFactory.REDO.getId()) && !id
.equals(ActionFactory.UNDO.getId())) {
return false;
}
return true;
}
이렇게 하면 내 가방 앞머리를 접두사로 하는 item과 Redo, undo 항목만 나타날 수 있습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
m1 이클립스에 oracle cloud (오라클 클라우드)연결하기m1에는 oracle이 설치되지 않는다.... 큰맘먹고 지른 m1인데 oracle이 설치되지 않는다니... 하지만 이뻐서 용서가 된다. 이거 때문에 웹 개발 국비수업을 듣는 도중에 몇번 좌절하고 스트레스를 크게 받았...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.