blob: 9bec1113c37aba68df71d17858370914d7d85a21 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.common.snippets.ui;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.IEditorPart;
import org.eclipse.wst.common.snippets.core.ISnippetItem;
/**
* An insertion class is responsible for inserting a snippet item's contents
* into editors. Implementors are responsible for supporting the drag-and-drop
* mechanism and inserting the snippet's text into a given editor part.
*/
public interface ISnippetInsertion {
/**
* The data is required from the drag source.
*
* <p>
* The following fields in the DragSourceEvent should be examined/updated
* by the Insertion object:
* <ul>
* <li>dataType - (in) the type of data requested. This is a TransferData
* object and can be used with the Transfer subclasses.
* <li>data - (out) the application inserts the actual data here (must
* match the dataType)
* </ul>
* </p>
*
* Subclasses should check which Transfer types are supported and set the
* data accordingly.
*
* @param event -
* the information associated with the drag set data event
* @param item -
* the ISnippetItem instance from which to derive the data
*/
void dragSetData(DragSourceEvent event, ISnippetItem item);
/**
* The Transfer types to support from a drag source. May be null. Required
* to do anything more complicated than a simple text drop with DND, a
* matching IDropAction should be registered to handle the insertion at
* drop-time.
*
* @return the list of valid transfer types during Drag and Drop
*/
Transfer[] getTransfers();
/**
* Insert the current ISnippetItem's insertion String to the given
* IEditorPart. Used by double-click behavior.
*
* @param editorPart
* the editor part into which to insert
*/
void insert(IEditorPart editorPart);
/**
* The target editorpart in the workbench window. May be used as a hint
* for determining which Transfer types to allow and what transfer data to
* set during Drag and Drop operations.
*
* @param targetPart
*/
void setEditorPart(IEditorPart targetPart);
/**
* Use this ISnippetItem
*
* @param item
* the item to insert
*/
void setItem(ISnippetItem item);
}