/* * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ import sun.awt.X11.XEmbeddedFrame; import java.awt.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; /* * @summary GUI of XEmbedMemoryTestTask. It creates an SWT shell on which an * AWT Frame is embedded. Components will be added in the AWT frame * and checked for any memory leak when they are removed. * @author Girish R (girish.ramachandran@sun.com), AWT-SQE */ public class GUIXEmbedMemory extends Frame { XEmbeddedFrame frame; String windowID; Process process; static String WINDOW_ID_FILE = "window_id"; public void destroyProcess() { if (process != null) process.destroy(); } public GUIXEmbedMemory() throws Exception { //Check if the OS is Solaris or Linux and the toolkit is XToolkit String osName = System.getProperty("os.name"); if (!osName.equals("Linux") && !osName.equals("SunOS")) { return; } process = Runtime.getRuntime().exec("./gtk-embedder"); File file = new File(WINDOW_ID_FILE); int waitCount = 0; while (!file.exists() && waitCount < 20) { try { Thread.sleep(100); } catch (Exception e) {} waitCount++; } windowID = new BufferedReader(new FileReader(file)).readLine(); long window = Long.decode(windowID).longValue(); frame = new XEmbeddedFrame(window); frame.setLayout(new FlowLayout()); frame.setSize(500, 270); frame.setBackground(Color.red); } }