static { Clipboard systemClipboard = null; try { // if we don't have access to the system clipboard, will throw // a security exception SecurityManager mgr = System.getSecurityManager(); if (mgr != null) { mgr.checkSystemClipboardAccess(); } systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); } catch (SecurityException e) { // means we can't get to system clipboard, so create app level one systemClipboard = new Clipboard("UIResourceMgr"); } catch (Exception e) { e.printStackTrace(); } SYSTEM_CLIPBOARD = systemClipboard; }
private boolean canAccessSystemClipboard() { boolean b = false; if (!GraphicsEnvironment.isHeadless()) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { try { sm.checkSystemClipboardAccess(); b = true; } catch (SecurityException se) { if (log.isLoggable(Level.FINE)) { log.log(Level.FINE, "InputEvent.canAccessSystemClipboard() got SecurityException ", se); } } } else { b = true; } } return b; }
public void selectionDone(SelectionEvent evt) { if (!useUnixTextSelection) return; Object o = evt.getSelection(); if (!(o instanceof CharacterIterator)) return; CharacterIterator iter = (CharacterIterator) o; // first see if we can access the clipboard SecurityManager securityManager; securityManager = System.getSecurityManager(); if (securityManager != null) { try { securityManager.checkSystemClipboardAccess(); } catch (SecurityException e) { return; // Can't access clipboard. } } int sz = iter.getEndIndex() - iter.getBeginIndex(); if (sz == 0) return; char[] cbuff = new char[sz]; cbuff[0] = iter.first(); for (int i = 1; i < cbuff.length; ++i) { cbuff[i] = iter.next(); } final String strSel = new String(cbuff); // HACK: getSystemClipboard sometimes deadlocks on // linux when called from the AWT Thread. The Thread // creation prevents that. new Thread() { public void run() { Clipboard cb; cb = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection sel; sel = new StringSelection(strSel); cb.setContents(sel, sel); } }.start(); }
@Override public void checkSystemClipboardAccess() { if (finalSecurityManager != null) finalSecurityManager.checkSystemClipboardAccess(); }