/* * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program 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 program 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 at /legal/license.txt). * * 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 Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ import java.awt.*; import java.awt.event.*; import javax.microedition.xlet.*; import sun.awt.Robot; public class TestXlet1Auto implements Xlet, MouseListener, KeyListener, FocusListener { ThreadGroup myThreadGroup; boolean failed = false; boolean debug = true; Component c; XletContext context; Robot robot; public TestXlet1Auto() { System.out.println("Creating TestXlet1Auto:" + Thread.currentThread()); myThreadGroup = Thread.currentThread().getThreadGroup(); } public void initXlet(XletContext context) { this.context = context; c = new Component() { public Dimension getMinimumSize() { return new Dimension(200,200); } public Dimension getPreferredSize() { return new Dimension(200,200); } public void paint(Graphics g) { g.setColor(Color.RED); g.fillRect(50,50,100,100); } }; c.setFocusable(true); c.addFocusListener(this); c.addMouseListener(this); c.addKeyListener(this); try { Container container = context.getContainer(); container.setSize(200,200); container.setLayout(new FlowLayout()); container.add(c); container.validate(); container.setVisible(true); } catch (UnavailableContainerException e) { e.printStackTrace(); failed = true; context.notifyDestroyed(); } } public void startXlet() { try { if (robot == null) robot = new Robot(); Point loc = c.getLocationOnScreen(); robot.mouseMove(loc.x + c.getSize().width/2, loc.y + c.getSize().height/2); robot.delay(100); robot.mousePress(MouseEvent.BUTTON1_MASK); robot.mouseRelease(MouseEvent.BUTTON1_MASK); robot.delay(100); robot.keyPress(KeyEvent.VK_A); robot.delay(100); } catch (Exception e) { e.printStackTrace(); failed = true; context.notifyDestroyed(); } } public void pauseXlet() {} public void destroyXlet(boolean b) { debugMessage("TestXlet1Auto.destoryXlet()"); if (failed) { System.out.println("\nTest failed\n"); } } public void mousePressed(MouseEvent e) { debugMessage("\nTestXlet1Auto-MousePressed:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void mouseReleased(MouseEvent e) { debugMessage("\nTestXlet1Auto-MouseReleased:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void mouseEntered(MouseEvent e) { debugMessage("\nTestXlet1Auto-MouseEntered:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void mouseExited(MouseEvent e) { debugMessage("\nTestXlet1Auto-MouseExited:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void mouseClicked(MouseEvent e) { debugMessage("\nTestXlet1Auto-MouseClicked:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void keyPressed(KeyEvent e) { debugMessage("\nTestXlet1Auto-KeyPressed:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void keyReleased(KeyEvent e) { debugMessage("\nTestXlet1Auto-KeyReleased:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void keyTyped(KeyEvent e) { debugMessage("\nTestXlet1Auto-KeyTyped:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void focusGained(FocusEvent e) { debugMessage("\nTestXlet1Auto-FocusGained:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } public void focusLost(FocusEvent e) { debugMessage("\nTestXlet1Auto-FocusLost:"); debugMessage(" " + e.getSource() + " " + Thread.currentThread()); checkThreadGroup(); } void checkThreadGroup() { if (Thread.currentThread().getThreadGroup() != myThreadGroup) { System.out.println("Wrong TheadGroup!"); System.out.println(" Expected TG: " + myThreadGroup); System.out.println(" Received TG: " + Thread.currentThread().getThreadGroup()); new Exception("Just for Debug").printStackTrace(); failed = true; context.notifyDestroyed(); } } void debugMessage(String s) { if (debug) System.out.println(s); } }