The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/home/markt/bin/perl -w
use strict;
no strict 'subs';
use lib '..';
use Java;

# Connect to JavaServer
my $java = new Java();

print "going to frame1\n";
# Create my Frame object
my $frame = $java->create_object("java.awt.Frame","Event Example");

# Set the size and show it
$frame->setSize(200,200);
$frame->show();

# Set up an event listener
$java->do_event($frame,"addWindowListener",\&event);

print "going to dialog\n";

my $dialog = $java->create_object("java.awt.Dialog",$frame,"Mark's Dialog");
$dialog->setSize(400,400);
print "going to dialog show\n";
$dialog->setVisible("true:b");
print "back from dialog show\n";

print "going to frame2\n";

my $frame2 = $java->create_object("java.awt.Frame","Mark Rox");
$frame2->setSize(200,200);
$frame2->show();
$java->do_event($frame2,"addWindowListener",\&event);

while(1)
{
	print "GO'ing\n";
	my $b = $java->go;
	last if (!defined $b);
}

sub event
{
	my($object,$event) = @_;
	my $val = $event->getID->get_value;
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_ACTIVATED")->get_value)
	{
		print "Window Activated\n";
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_CLOSED")->get_value)
	{
		print "Window Closed\n";
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_CLOSING")->get_value)
	{
		print "Window Closing\n";
		$object->dispose;
		undef $object;
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_DEACTIVATED")->get_value)
	{
		print "Window Deactivated\n";
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_DEICONIFIED")->get_value)
	{
		print "Window Deiconified\n";
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_ICONIFIED")->get_value)
	{
		print "Window Iconified\n";
	}
	if ($val == $java->get_field("java.awt.event.WindowEvent","WINDOW_OPENED")->get_value)
	{
		print "Window Opened\n";
	}
}