package org.eclipse.ecf.presence.collab.ui.url;
import java.net.URL;
import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.presence.IPresenceContainerAdapter;
import org.eclipse.ecf.presence.roster.IRosterEntry;
import org.eclipse.ecf.presence.roster.IRosterItem;
import org.eclipse.ecf.presence.ui.dnd.IRosterViewerDropTarget;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.TransferData;
public class URLRosterViewerDropTarget implements IRosterViewerDropTarget {
IRosterEntry rosterEntry;
public boolean performDrop(Object data) {
if (rosterEntry == null)
return false;
final URLShare urlshare = getURLShare(rosterEntry);
if (urlshare == null)
return false;
try {
String s = (String) data;
s = s.substring(0, s.indexOf("\n")); //$NON-NLS-1$
final URL anURL = new URL(s);
urlshare.sendURL(rosterEntry.getUser().getName(), rosterEntry.getUser().getID(), anURL.toExternalForm());
} catch (final Exception e) {
return false;
}
return true;
}
private URLShare getURLShare(IRosterEntry rosterEntry1) {
final IPresenceContainerAdapter pca = rosterEntry1.getRoster().getPresenceContainerAdapter();
if (pca == null)
return null;
final IContainer container = (IContainer) pca.getAdapter(IContainer.class);
if (container == null)
return null;
return URLShare.getURLShare(container.getID());
}
public boolean validateDrop(IRosterItem rosterItem, int operation, TransferData transferType) {
if (!TextTransfer.getInstance().isSupportedType(transferType))
return false;
if (rosterItem instanceof IRosterEntry) {
final Object data = TextTransfer.getInstance().nativeToJava(transferType);
// Check to see if URL...if not, return false;
try {
new URL((String) data);
} catch (final Exception e) {
rosterEntry = null;
return false;
}
// Check to see that URLShare exists for roster entry
if (getURLShare((IRosterEntry) rosterItem) == null)
return false;
rosterEntry = (IRosterEntry) rosterItem;
return true;
}
return false;
}
}