package org.csstudio.sds.ui.internal.editor.dnd;
import java.util.List;
import org.csstudio.csdata.ProcessVariable;
import org.csstudio.platform.model.pvs.IProcessVariableAddress;
import org.csstudio.ui.util.dnd.SerializableItemTransfer;
import org.eclipse.gef.EditPartViewer;
/**
* Drag source listener for SDS that provides an array of {@link ProcessVariable}.
*
* @author swende
*
*/
public class ProcessVariablesDragSourceListener extends AbstractDragSourceListener<ProcessVariable[]> {
public ProcessVariablesDragSourceListener(EditPartViewer viewer) {
super(viewer, SerializableItemTransfer.getTransfer(ProcessVariable[].class));
}
@Override
protected ProcessVariable[] convert(IProcessVariableAddress mainAddress, List<IProcessVariableAddress> allAddresses) {
ProcessVariable[] result = null;
if (!allAddresses.isEmpty()) {
//Drag only main pv
result = new ProcessVariable[1];
result[0] = new ProcessVariable(mainAddress.getProperty());
}
return result;
}
}