2014-03-03 5 views
1

내 DragSourceListener에 소스 위젯은 있지만 대상 위젯은없는 DragSourceEvent 유형의 이벤트를 수신합니다.이클립스로 소스 및 대상 위젯을 얻는 방법 드래그 앤 드롭

내 ViewerDropAdapter에서 대상 위젯은 있지만 소스 위젯은없는 DropTargetEvent 유형의 이벤트를 수신합니다.

드래그 앤 드롭이 지원되는지 여부를 검증하는 부분은 소스 위젯과 대상 위젯을 함께 사용합니다.

소스 위젯과 대상 위젯을 모두 포함하는 유효성 검사를 수행하려면 어떻게해야합니까?

답변

2

자신 만의 컨트롤 사이를 드래그하려는 경우 추가 정보가 필요한 org.eclipse.swt.dnd.Transfer 유형을 사용할 수 있습니다 (아마도 ByteArrayTransfer 기준).

Eclipse LocalSelectionTransfer은 컨트롤 사이에서 선택 항목을 드래그 할 수 있도록 조금 더 비슷합니다.

0
당신이, 당신이 getSelectedObject()getCurrentTarget를 사용할 수 드래그 (등을 드래그 앤 드롭에 의한 요소의 순서를 변경하려고 같은) 같은 뷰어 내에서 위젯을 삭제하려는 경우

() ViewerDropAdapter의 메서드

getSelectedObject() - 뷰어에서 선택한 객체를 반환합니다. 이것은 드래그되는 소스 요소입니다.
getCurrentTarget() - 뷰어 위로 마우스를 가져 가면 현재 마우스 아래에있는 대상 객체를 반환합니다.이 객체는 놓을 때 대상이됩니다.

필요에 따라이 방법을 재정의 할 수도 있습니다.

validateDrop()에서 소스 및 대상 객체의 유효성을 검사하여 해당 드롭을 허용해야하는지 확인할 수 있습니다. 참고로 대상 객체는 validateDrop() 내에서 기본적으로 사용할 수 있습니다.

validateDrop(Object target, int operation, TransferData transferType)