blob: 86250ad5f9526097043754738c675f86ccbd9980 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2012 Oracle 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.dnd;
import org.eclipse.bpel.ui.BPELEditor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Nov 16, 2006
*
*/
public class TextDropTargetListener extends FileDropTargetListener {
/**
*
* @param viewer
* @param editor
*/
public TextDropTargetListener ( GraphicalViewer viewer, BPELEditor editor) {
super( viewer, editor );
}
/** (non-Javadoc)
* @see org.eclipse.swt.dnd.DropTargetListener#drop(org.eclipse.swt.dnd.DropTargetEvent)
*/
@SuppressWarnings("nls")
@Override
public void drop (DropTargetEvent event) {
if (getTransfer().isSupportedType(event.currentDataType)) {
String data = (String) getTextTransfer().nativeToJava(event.currentDataType);
if (data == null) {
return ;
}
data = data.trim();
// Ignore non-url drops.
if (data.startsWith("http://") == false &&
data.startsWith("https://") == false &&
data.startsWith("ftp://") == false &&
data.startsWith("ftps://") == false )
{
return ;
}
URI uri = null;
try {
uri = URI.createURI(data);
startImport();
addImport( attemptLoad ( uri ), uri );
endImport(event);
} catch (Throwable t) {
return ;
}
}
}
/** (non-Javadoc)
* @see org.eclipse.jface.util.TransferDropTargetListener#getTransfer()
*/
@Override
public Transfer getTransfer() {
return TextTransfer.getInstance();
}
/**
* This only here because nativeToJava() in Transfer is protected.
*
* @return the text transfer instance.
*/
public TextTransfer getTextTransfer () {
return (TextTransfer) getTransfer();
}
/** (non-Javadoc)
* @see org.eclipse.jface.util.TransferDropTargetListener#isEnabled(org.eclipse.swt.dnd.DropTargetEvent)
*/
@Override
public boolean isEnabled (DropTargetEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
String data = (String) TextTransfer.getInstance().nativeToJava(event.currentDataType);
if (data == null) {
return false;
}
data = data.trim();
return data.startsWith("http://") || data.startsWith("https://");
}
return false;
}
}