/******************************************************************************* * Copyright (c) 2013 SAP AG. * 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: * Tobias Pfeifer (SAP AG) - initial implementation *******************************************************************************/ package org.eclipse.egit.ui.internal.rebase; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.dnd.DragSourceAdapter; import org.eclipse.swt.dnd.DragSourceEvent; final class RebaseInteractiveDragSourceListener extends DragSourceAdapter { private final RebaseInteractiveView rebaseInteractiveView; RebaseInteractiveDragSourceListener( RebaseInteractiveView rebaseInteractiveView) { this.rebaseInteractiveView = rebaseInteractiveView; } @Override public void dragSetData(DragSourceEvent event) { if (!this.rebaseInteractiveView.isDragAndDropEnabled()) return; IStructuredSelection selection = (IStructuredSelection) this.rebaseInteractiveView.planTreeViewer .getSelection(); if (selection.isEmpty()) return; if (LocalSelectionTransfer.getTransfer() .isSupportedType(event.dataType)) { LocalSelectionTransfer.getTransfer().setSelection(selection); return; } } @Override public void dragStart(DragSourceEvent event) { if (!this.rebaseInteractiveView.isDragAndDropEnabled()) { event.doit = false; return; } event.doit = !this.rebaseInteractiveView.planTreeViewer.getSelection() .isEmpty(); } @Override public void dragFinished(DragSourceEvent event) { if (LocalSelectionTransfer.getTransfer() .isSupportedType(event.dataType)) LocalSelectionTransfer.getTransfer().setSelection(null); } }