놓기 조치

org.eclipse.ui.dropActions

이 확장점은 놓기 동작을 다른 플러그인에서 정의한 보기에 추가하는 데 사용됩니다.

플러그인 메커니즘에서 발생한 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에서 이 조치를 사용합니다.

클래스 속성 값은 org.eclipse.ui.part.IDropActionDelegate를 구현하는 Java 클래스의 완전한 이름이어야 합니다. 실질적으로 필요하기 전에 전체 플러그인이 로드되는 것을 방지하기 위해 가능한 늦게 이 클래스를 로드합니다.

Workbench에서는 이 확장점에 구현을 제공하지 않습니다. 플러그인에서는 이 확장점에 다른 플러그인에서 정의한 보기에 놓기 동작 추가를 제공할 수 있습니다.