2013-12-10 3 views
0

위젯을 패널 외부에 놓을 때 패널에서 위젯을 삭제하려고합니다. 나는이 자습서와 예제를 찾아 보았습니다. http://code.google.com/p/gwt-dnd/wiki/GettingStarted 그러나 드롭 컨트롤러를 설정하여 패널 외부로 떨어 뜨리는 방법을 알아낼 수 없습니다.드래그 앤 드롭 gwt

힌트를 주시겠습니까?

+0

시도한 것과 중단 된 곳에 대한 세부 정보를 공유 할 수 있습니까? –

답변

0

DropController (AbstractDropController)에서 생성자에서 요소를 삭제할 수있는 요소를 정의해야합니다. 구체적으로 도움이되는 몇 가지 코드 스 니펫이 있습니까?

추신 : 내가 언급 한이 라이브러리를 사용하여 D & D를 빌드했는데, 제 의견으로는 버그가 많고 시작하기가 쉽지 않습니다. 하지만 더 나은 네이티브 D & GWT 용 D lib를 찾지 못했습니다. jquery D & D를 래핑하려고했습니다. 매우 빠르고 부드럽지만 포장하기가 어렵습니다.

+0

그게 내가 한 짓이다. AbstractDragController를 상속 한 DropController를 만들었습니다. 생성자에서 정의 할 요소는 무엇입니까? 위젯을 패널 외부 어디에나 놓고 싶습니다. – vladM

2

당신이 PickupDragController

PickupDragController controller = 
    new PickupDragController(pickupContainer, false); 

를 인스턴스화하고 픽업 컨테이너 외부에서 위젯을 떨어 뜨린 경우 다음 VetoDragException가 자동으로합니다 (생성자에서 해당 false의 결과로) 슬로우됩니다. JavaDoc 또는 심지어 BoundaryDropController의 코드를 참조하십시오.

그런 다음 예외가 발생한 경우 DragHandleronDragEnd 검사에 등록 할 수 있습니다. 그렇다면 위젯을 제거하십시오. 다음과 같음 :

class MyHandler implements DragHandler { 
    // onPreviewDragStart, onDragStart, onPreviewDragEnd omitted. 
    public void onDragEnd(DragEndEvent event) { 
    if (event.getContext().vetoException != null) { 
     // Not sure it works, but you get the idea. 
     event.getContext().draggable.removeFromParent(); 
    } 
    } 
} 

controller.addDragHandler(new MyHandler()); 
+0

감사합니다. 작동합니다. :) – vladM

+0

고맙습니다. 나를 위해 일했다. 좋은 연구. –

+0

@Andrea Boscolo : 마지막 요소를 끌 수 없습니다. 내가 디버깅 할 때 부모가 null이라는 것을 알았습니다. –