package net.mms_projects.copy_it.clipboard_services;
import net.mms_projects.copy_it.ClipboardListener;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
import java.util.concurrent.Executor;
public class AwtService implements CopyServiceInterface, PasteServiceInterface, ClipboardOwner {
private Executor executor;
private ClipboardListener listener;
public AwtService(ClipboardListener listener) {
this.listener = listener;
}
@Override
public void activateCopy() {
}
@Override
public void deactivateCopy() {
}
@Override
public boolean isCopyActivated() {
return false;
}
@Override
public void requestSet(final String content) {
this.getExecutor().execute(new Runnable() {
@Override
public void run() {
setContent(content);
}
});
}
@Override
public void activatePaste() {
}
@Override
public void deactivatePaste() {
}
@Override
public boolean isPasteActivated() {
return false;
}
@Override
public String getContent() {
String result = "";
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
//odd: the Object param of getContents is not currently used
Transferable contents = clipboard.getContents(null);
boolean hasTransferableText =
(contents != null) &&
contents.isDataFlavorSupported(DataFlavor.stringFlavor);
if (hasTransferableText) {
try {
result = (String) contents.getTransferData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException ex) {
//highly unlikely since we are using a standard DataFlavor
System.out.println(ex);
ex.printStackTrace();
} catch (IOException ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
return result;
}
@Override
public void setContent(String content) {
StringSelection stringSelection = new StringSelection(content);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, this);
}
@Override
public Executor getExecutor() {
return this.executor;
}
@Override
public void setExecutor(Executor executor) {
this.executor = executor;
}
@Override
public String getServiceName() {
return "awt";
}
@Override
public void lostOwnership(Clipboard clipboard, Transferable transferable) {
}
}