40 |
|
|
41 |
import gnu.classpath.Configuration; |
import gnu.classpath.Configuration; |
42 |
import gnu.java.awt.peer.EmbeddedWindowPeer; |
import gnu.java.awt.peer.EmbeddedWindowPeer; |
43 |
|
import gnu.java.security.action.SetAccessibleAction; |
44 |
|
|
45 |
import java.awt.Component; |
import java.awt.Component; |
46 |
import java.awt.Frame; |
import java.awt.Frame; |
47 |
import java.awt.Toolkit; |
import java.awt.Toolkit; |
48 |
import java.lang.reflect.Field; |
import java.lang.reflect.Field; |
49 |
|
import java.security.AccessController; |
50 |
|
|
51 |
/** |
/** |
52 |
* Represents an AWT window that can be embedded into another |
* Represents an AWT window that can be embedded into another |
90 |
|
|
91 |
if (! (tk instanceof EmbeddedWindowSupport)) |
if (! (tk instanceof EmbeddedWindowSupport)) |
92 |
throw new UnsupportedOperationException |
throw new UnsupportedOperationException |
93 |
("Embedded windows are not supported by the current peers: " + tk.getClass()); |
("Embedded windows are not supported by the current peers: " |
94 |
|
+ tk.getClass()); |
95 |
|
|
96 |
// Circumvent the package-privateness of the AWT internal |
// Circumvent the package-privateness of the AWT internal |
97 |
// java.awt.Component.peer member variable. |
// java.awt.Component.peer member variable. |
98 |
try |
try |
99 |
{ |
{ |
100 |
Field peerField = Component.class.getDeclaredField("peer"); |
Field peerField = Component.class.getDeclaredField("peer"); |
101 |
|
AccessController.doPrivileged(new SetAccessibleAction(peerField)); |
102 |
peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this)); |
peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this)); |
103 |
} |
} |
104 |
catch (IllegalAccessException e) |
catch (IllegalAccessException e) |