test/java/awt/regtesthelpers/UtilInternal.java

Print this page




  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]);