package sk.stuba.fiit.perconik.activity.listeners.ui.text;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.TextTransfer;
import sk.stuba.fiit.perconik.eclipse.swt.widgets.DisplayTask;
import sk.stuba.fiit.perconik.eclipse.ui.Windows;
import static java.util.Arrays.asList;
import static java.util.Collections.disjoint;
final class ClipboardReader extends DisplayTask<String> {
static final ClipboardReader instance = new ClipboardReader();
private static final Set<String> supportedTypeNames = ImmutableSet.of("Rich Text Format", "CF_UNICODETEXT", "CF_TEXT");
private ClipboardReader() {}
@Override
public String call() {
Clipboard clipboard = new Clipboard(Windows.getActiveWindow().getShell().getDisplay());
if (disjoint(supportedTypeNames, asList(clipboard.getAvailableTypeNames()))) {
return null;
}
String text = clipboard.getContents(TextTransfer.getInstance()).toString();
clipboard.dispose();
return text;
}
}