package dictionaries; import clipboard.monitor.ClipboardEvent; import clipboard.monitor.ClipboardListener; import clipboard.monitor.windows.WindowsClipboardMonitor; import javax.swing.*; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * User: mateusz * Date: 15.04.12 * Time: 12:15 */ public class PonsService { //responsible for filtering/validation Clipboard content //private ClipboardService clipboardService; private List<PonsServiceListener> listeners = new ArrayList<PonsServiceListener>(); private WindowsClipboardMonitor wc = new WindowsClipboardMonitor(); private PonsDictionary ponsDictionary; public PonsService() { wc.addListener(new ClipboardListener() { @Override public void onEvent(ClipboardEvent event) { String currentClipboardContent = getClipboardContents(); System.out.println("Works!!!!! = " + currentClipboardContent); for (PonsServiceListener listener : listeners) { listener.actionPerformed(currentClipboardContent); } } }); } public void addPonsServiceListener(PonsServiceListener listener) { listeners.add(listener); } public void removePonsServiceListener(PonsServiceListener listener) { listeners.remove(listener); } public String getClipboardContents() { String result = ""; System.out.println("1 Event dispatch thread = " + SwingUtilities.isEventDispatchThread()); 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; } public void start() { wc.start(); } }