放下動作

識別碼:org.eclipse.ui.dropActions

說明:這個延伸點用來新增放下的行為到其它外掛程式所定義的檢視畫面中。

由於外掛程式機制所強制實施的 UI 分層作業,因此,檢視畫面通常不會知道其它檢視畫面的內容和本質。 結果不同外掛程式的拖放作業也有可能不同。 比方說,有人可能會想提供 Java 重新分解因素支援,讓使用者從 Java 編輯器內容概要畫面中,將方法拖曳到資訊導覽器中的另一 Java 檔案中。 由於資源導覽器不知道 Java 內容的任何相關事項,因此,在 Java 方法放入其中時,它不知道要怎麼辦。同樣地,任何 ISV 都可以將其部份內容放到一個 Java 檢視器中。

org.eclipse.ui.dropActions 延伸點是平台所產生,用來處理這些狀況。 這個機制會將放下行為回頭委派給放下作業的起始者。 這個行為包含在必須實作 org.eclipse.ui.part.IDropActionDelegate 的動作中。 本身是拖曳作業來源的檢視器必須支援 org.eclipse.ui.part.PluginTransfer 轉送類型, 並將 org.eclipse.ui.part.PluginTransferData 物件放入拖曳事件中。 請參閱 org.eclipse.jface.viewers.StructuredViewer#addDragSupport,以進一步學習如何新增拖曳支援到檢視器中。

配置標記:

   <!ELEMENT dropContribution (action)*>

   <!ELEMENT action*>
   <!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 會用到它。

API 資訊:class 屬性值必須是實作 org.eclipse.ui.part.IDropActionDelegate 之 Java 類別的完整名稱。 這個類別的載入要儘可能晚,以避免在真正需要它之前載入整個外掛程式。

提供的實作:工作台不會提供這個延伸點的實作。 外掛程式可以提供到這個延伸點,以新增放下行為到其它外掛程式所定義的檢視畫面中。

Copyright IBM Corp. 2000, 2001.  All Rights Reserved.