private static void makeSureSystemClipboardContainsString( Clipboard sys, NbClipboard clip ) throws InterruptedException { final CountDownLatch wait = new CountDownLatch(1); class FL implements FlavorListener { @Override public void flavorsChanged(FlavorEvent e) { wait.countDown(); } } FL fl = new FL(); sys.addFlavorListener(fl); StringSelection ss = new StringSelection("empty"); clip.setContents(ss, ss); wait.await(); }
public synchronized void removeFlavorListener(FlavorListener listener) { if (listener == null) { return; } AppContext appContext = AppContext.getAppContext(); EventListenerAggregate contextFlavorListeners = (EventListenerAggregate) appContext.get(CLIPBOARD_FLAVOR_LISTENER_KEY); if (contextFlavorListeners == null){ //else we throw NullPointerException, but it is forbidden return; } if (contextFlavorListeners.remove(listener) && --numberOfFlavorListeners == 0) { unregisterClipboardViewerChecked(); currentDataFlavors = null; } }
public synchronized void removeFlavorListener(FlavorListener listener) { if (listener == null) { return; } AppContext appContext = AppContext.getAppContext(); EventListenerAggregate contextFlavorListeners = (EventListenerAggregate) appContext.get(CLIPBOARD_FLAVOR_LISTENER_KEY); if (contextFlavorListeners == null){ //else we throw NullPointerException, but it is forbidden return; } if (contextFlavorListeners.remove(listener) && --numberOfFlavorListeners == 0) { unregisterClipboardViewerChecked(); currentFormats = null; } }
public synchronized void addFlavorListener(FlavorListener listener) { if (listener == null) { return; } AppContext appContext = AppContext.getAppContext(); Set<FlavorListener> flavorListeners = getFlavorListeners(appContext); if (flavorListeners == null) { flavorListeners = new HashSet<>(); appContext.put(CLIPBOARD_FLAVOR_LISTENER_KEY, flavorListeners); } flavorListeners.add(listener); if (numberOfFlavorListeners++ == 0) { long[] currentFormats = null; try { openClipboard(null); currentFormats = getClipboardFormats(); } catch (final IllegalStateException ignored) { } finally { closeClipboard(); } this.currentFormats = currentFormats; registerClipboardViewerChecked(); } }
/** * Checks change of the {@code DataFlavor}s and, if necessary, * posts notifications on {@code FlavorEvent}s to the * AppContexts' EDTs. * The parameter {@code formats} is null iff we have just * failed to get formats available on the clipboard. * * @param formats data formats that have just been retrieved from * this clipboard */ protected final void checkChange(final long[] formats) { if (Arrays.equals(formats, currentFormats)) { // we've been able to successfully get available on the clipboard // DataFlavors this and previous time and they are coincident; // don't notify return; } currentFormats = formats; for (final AppContext appContext : AppContext.getAppContexts()) { if (appContext == null || appContext.isDisposed()) { continue; } Set<FlavorListener> flavorListeners = getFlavorListeners(appContext); if (flavorListeners != null) { for (FlavorListener listener : flavorListeners) { if (listener != null) { PeerEvent peerEvent = new PeerEvent(this, () -> listener.flavorsChanged(new FlavorEvent(SunClipboard.this)), PeerEvent.PRIORITY_EVENT); SunToolkit.postEvent(appContext, peerEvent); } } } } }
/** Creates a new instance of GUIClipboard */ public GUIClipboard(GUIPrism pr) { super(pr, false); this.prism = pr; initComponents(); doUndoManagerEnables(); doClipboardEnables(); /* Listen to clipboard events. */ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.addFlavorListener(new FlavorListener() { public void flavorsChanged(FlavorEvent e) { doClipboardEnables(); } }); }
@Override public synchronized void addFlavorListener(FlavorListener listener) { Boolean prev = FIRING.get(); try { FIRING.set(true); super.addFlavorListener(listener); } finally { FIRING.set(prev); } }
final void fireChange() { Boolean prev = FIRING.get(); try { FIRING.set(true); FlavorEvent e = new FlavorEvent(this); fireClipboardChange(); for (FlavorListener l : super.getFlavorListeners()) { l.flavorsChanged(e); } } finally { FIRING.set(prev); } }
private void registerListener() { if (flavL == null) { Clipboard c = getClipboard(); if (c != null) { flavL = WeakListeners.create(FlavorListener.class, this, c); c.addFlavorListener(flavL); } } }
@Override public void setContents (Transferable t, ClipboardOwner o) { super.setContents (t, o); fireClipboardChange (); FlavorEvent ev = new FlavorEvent(this); for (FlavorListener flavorListener : getFlavorListeners()) { flavorListener.flavorsChanged(ev); } }
public synchronized void removeFlavorListener(FlavorListener listener) { if (listener == null) { return; } Set<FlavorListener> flavorListeners = getFlavorListeners(AppContext.getAppContext()); if (flavorListeners == null){ //else we throw NullPointerException, but it is forbidden return; } if (flavorListeners.remove(listener) && --numberOfFlavorListeners == 0) { unregisterClipboardViewerChecked(); currentFormats = null; } }
public PasteAction(Lookup context) { super(context, ClipboardUtil.Pasteable.class); setDisplayName(Bundle.CTL_PasteAction()); setSmallIconPath(IMG_16); setLargeIconPath(IMG_32); cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if(cb == null) { logger.warning("SystemClipboard not found! CopyAction will be disabled!"); } else { cb.addFlavorListener(WeakListeners.create(FlavorListener.class, cbListener, cb)); } }
@Override public FlavorListener[] getFlavorListeners() { return new FlavorListener[0]; }
public synchronized FlavorListener[] getFlavorListeners() { EventListenerAggregate contextFlavorListeners = (EventListenerAggregate) AppContext.getAppContext().get(CLIPBOARD_FLAVOR_LISTENER_KEY); return contextFlavorListeners == null ? new FlavorListener[0] : (FlavorListener[])contextFlavorListeners.getListenersCopy(); }
@SuppressWarnings("unchecked") private Set<FlavorListener> getFlavorListeners(AppContext appContext) { return (Set<FlavorListener>)appContext.get(CLIPBOARD_FLAVOR_LISTENER_KEY); }
public synchronized FlavorListener[] getFlavorListeners() { Set<FlavorListener> flavorListeners = getFlavorListeners(AppContext.getAppContext()); return flavorListeners == null ? new FlavorListener[0] : flavorListeners.toArray(new FlavorListener[flavorListeners.size()]); }