14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package test.java.awt.regtesthelpers;
25
26 import java.awt.peer.FramePeer;
27 import java.lang.reflect.Constructor;
28 import java.lang.reflect.Field;
29 import java.lang.reflect.InvocationTargetException;
30 import java.lang.reflect.Method;
31 import java.awt.Toolkit;
32 import java.awt.Frame;
33
34
35
36 /**
37 Class with static methods using internal/proprietary API by necessity.
38 */
39 public final class UtilInternal {
40
41 private UtilInternal () {} // this is a helper class with static methods :)
42
43 public static Frame createEmbeddedFrame(final Frame embedder)
44 throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException,
45 InstantiationException, InvocationTargetException
46 {
47 Toolkit tk = Toolkit.getDefaultToolkit();
48 FramePeer frame_peer = (FramePeer) embedder.getPeer();
49 System.out.println("frame's peer = " + frame_peer);
50 if ("sun.awt.windows.WToolkit".equals(tk.getClass().getName())) {
51 Class comp_peer_class =
52 Class.forName("sun.awt.windows.WComponentPeer");
53 System.out.println("comp peer class = " + comp_peer_class);
54 Field hwnd_field = comp_peer_class.getDeclaredField("hwnd");
55 hwnd_field.setAccessible(true);
56 System.out.println("hwnd_field =" + hwnd_field);
57 long hwnd = hwnd_field.getLong(frame_peer);
58 System.out.println("hwnd = " + hwnd);
59
60 Class clazz = Class.forName("sun.awt.windows.WEmbeddedFrame");
61 Constructor constructor = clazz.getConstructor (new Class [] {Long.TYPE});
62 return (Frame) constructor.newInstance (new Object[] {hwnd});
63 } else if ("sun.awt.X11.XToolkit".equals(tk.getClass().getName())) {
64 Class x_base_window_class = Class.forName("sun.awt.X11.XBaseWindow");
65 System.out.println("x_base_window_class = " + x_base_window_class);
66 Method get_window = x_base_window_class.getMethod("getWindow", new Class[0]);
67 System.out.println("get_window = " + get_window);
68 long window = (Long) get_window.invoke(frame_peer, new Object[0]);
|
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package test.java.awt.regtesthelpers;
25
26 import java.awt.peer.FramePeer;
27 import java.lang.reflect.Constructor;
28 import java.lang.reflect.Field;
29 import java.lang.reflect.InvocationTargetException;
30 import java.lang.reflect.Method;
31 import java.awt.Toolkit;
32 import java.awt.Frame;
33
34 import sun.awt.AWTAccessor;
35
36
37 /**
38 Class with static methods using internal/proprietary API by necessity.
39 */
40 public final class UtilInternal {
41
42 private UtilInternal () {} // this is a helper class with static methods :)
43
44 public static Frame createEmbeddedFrame(final Frame embedder)
45 throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException,
46 InstantiationException, InvocationTargetException
47 {
48 Toolkit tk = Toolkit.getDefaultToolkit();
49 FramePeer frame_peer = AWTAccessor.getComponentAccessor()
50 .getPeer(embedder);
51 System.out.println("frame's peer = " + frame_peer);
52 if ("sun.awt.windows.WToolkit".equals(tk.getClass().getName())) {
53 Class comp_peer_class =
54 Class.forName("sun.awt.windows.WComponentPeer");
55 System.out.println("comp peer class = " + comp_peer_class);
56 Field hwnd_field = comp_peer_class.getDeclaredField("hwnd");
57 hwnd_field.setAccessible(true);
58 System.out.println("hwnd_field =" + hwnd_field);
59 long hwnd = hwnd_field.getLong(frame_peer);
60 System.out.println("hwnd = " + hwnd);
61
62 Class clazz = Class.forName("sun.awt.windows.WEmbeddedFrame");
63 Constructor constructor = clazz.getConstructor (new Class [] {Long.TYPE});
64 return (Frame) constructor.newInstance (new Object[] {hwnd});
65 } else if ("sun.awt.X11.XToolkit".equals(tk.getClass().getName())) {
66 Class x_base_window_class = Class.forName("sun.awt.X11.XBaseWindow");
67 System.out.println("x_base_window_class = " + x_base_window_class);
68 Method get_window = x_base_window_class.getMethod("getWindow", new Class[0]);
69 System.out.println("get_window = " + get_window);
70 long window = (Long) get_window.invoke(frame_peer, new Object[0]);
|