2009-10-23 7 views
4

GWT 앱에서 RichTextArea를 사용하고 있습니다. 내 RichTextArea에 컨텍스트 메뉴를 추가 할 : 나는의 경계를 마우스 오른쪽 버튼으로 클릭 할 때GWT : RichTextArea의 상황에 맞는 메뉴

public class MyRichTextArea extends RichTextArea implements HasContextMenuHandlers { 
    public HandlerRegistration addContextMenuHandler(ContextMenuHandler h) { 
     return addDomHandler(h, ContextMenuEvent.getType()); 
    } 
} 

(...)

이 작동
myRichTextArea.addContextMenuHandler(new ContextMenuHandler() { 
    public void onContextMenu(ContextMenuEvent event) { 
     contextMenu.show(); 
    } 
}); 

그러나, 상황에 맞는 메뉴에만 나타납니다 RichTextArea. RichTextArea를 마우스 오른쪽 버튼으로 클릭하면 포함 된 텍스트에서 브라우저의 기본 컨텍스트 메뉴가 표시됩니다.

내 자신의 상황에 맞는 메뉴를 표시하려면 어떻게해야합니까?

+0

마우스 오른쪽 버튼을 RichtTextArea의 하위 요소로 가로 채서 상황에 맞는 메뉴를 표시하려고합니다. RichTextArea에 마우스 처리기를 추가 할 수도 있습니다. –

답변

0

리치 텍스트 영역에 포커스가있는 경우, 예를 들어 hasfocus 또는 더 나은 경우에는 오른쪽 마우스 클릭시 포커스가있을 때 알려주는 이벤트 리스너 (addFocusListener)가 있습니다. 마우스 버튼?

의미가 있습니까?

+0

음, FocusEvent에는 위젯이 포커스를 얻는 방법에 대한 정보가 없습니다. 즉, 오른쪽 마우스 또는 왼쪽 마우스 클릭으로 인해 포커스가 있는지 구분할 수 없습니다. – Bob

+0

마우스 오른쪽 버튼을 감지하지 못했다고 말하지 않았습니다. 당신은 당신의 코드가 국경에서만 작동하고 있다고 말했다. 여기는 참고 자료이지만 event.button == 2 또는 event.button == 3을 테스트하면 모든 기반을 커버 할 수 있다고 생각합니다. http://unixpapa.com/js/mouse.html 어쨌든, 버튼 2 또는 3을 확인했지만 여전히 작동하지 않으면 초점을 확인할 때입니다. 그 중 하나가 클릭 함. 말이 돼? –

+0

기본적으로 왼쪽 클릭을 확인한 다음 텍스트 영역에 포커스가 있는지 확인한 다음 컨텍스트 메뉴를 표시하려는 것을 알 수 있습니다. 둘 이상의 컨텍스트 메뉴가있는 경우 둘 중 하나를 선택해야합니다 하나의 html 요소에는 컨텍스트 메뉴가 있음). 어쨌든, 그것은 의미가 있고, 그것이 당신을 돕는다는 희망입니다. –

1

방지 기본 컨텍스트 한 수많은 :

myRichTextArea.addDomHandler(new ContextMenuHandler() { 

@Override public void onContextMenu(ContextMenuEvent event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
      // do what you want to do instead 
} 

}, ContextMenuEvent.getType());

+0

글쎄,이 작동하지만 네이티브 컨텍스트 메뉴를 표시하지 않습니다. 그래서 내 문제에 대한 해결책이 아닙니다. – Bob

+0

예, 브라우저 컨텍스트 메뉴도 있습니다. – Zubair

+0

답변을 업데이트했습니다. –