플러그인 메커니즘에서 발생한 UI 계층으로 인해 보기에서는 다른 보기의 컨텐츠와 네이처를 인식하지 못하는 경우가 많습니다. 이런 경우 플러그인 사이의 끌어서 놓기 작업이 까다로울 수 있습니다. 예를 들어, 사용자가 Java 편집기의 컨텐츠 아웃라이너에서 메소드를 자원 탐색기의 다른 Java 파일로 끌 수 있는 Java 리팩토링 지원을 제공하려 할 수 있습니다. 자원 탐색기에서는 Java 컨텐츠에 대해 알지 못하므로 Java 메소드가 놓여진 경우 작동하는 방법을 모릅니다. 마찬가지로 ISV에서 해당 컨텐츠의 일부 항목을 Java 표시기 중 하나에 놓기 원할 수 있습니다.
이런 상황을 해결하기 위해 플랫폼에서 org.eclipse.ui.dropActions 확장점을 제공합니다. 이 메커니즘에서는 놓기 동작을 끌기 작업을 시작한 대상에게 다시 위임합니다. 이 동작은 org.eclipse.ui.part.IDropActionDelegate를 구현해야 하는 조치에 포함되어 있습니다. 끌기 작업의 소스인 표시기에서 the org.eclipse.ui.part.PluginTransfer 전송 유형을 지원해야 하며 PluginTransferData 오브젝트를 끌기 이벤트에 배치해야 합니다. 끌기 지원을 표시기에 추가하는 방법을 보려면 org.eclipse.jface.viewers.StructuredViewer#addDragSupport를 참조하십시오.
<!ELEMENT extension (action*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT action EMPTY>
<!ATTLIST action
id CDATA #REQUIRED
class CDATA #REQUIRED>
다음은 위에서 정의한 놓기 조치를 사용하는 끌기 리스너에 관한 예제입니다.<extension point=
"org.eclipse.ui.dropActions"
>
<action id=
"my_drop_action"
class=
"com.xyz.eclipse.TestDropAction"
>
</action>
</extension>
class MyDragListener extends DragSourceAdapter { public void dragSetData(DragSourceEvent event) { if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { byte[] dataToSend = ...//enter the data to be sent. event.data = new PluginTransferData( "my_drop_action", dataToSend); } } }자세한 예제에 대해서는 플랫폼 readme 예제를 참조하십시오. 해당 예제에서 놓기 조치가 ReadmeDropActionDelegate에 정의되고 ReadmeContentOutlineDragListener에서 이 조치를 사용합니다.
Copyright (c) 2002, 2004 IBM Corporation and others.
All rights reserved. 본 프로그램 및 본 프로그램에 동봉되는 자료는 본 배포물에 동봉되는 Eclipse Public License v1.0의 조항에 따라 사용해야 하며
웹 사이트(http://www.eclipse.org/legal/epl-v10.html)에서도 관련 사항을 참조할 수 있습니다.