POE::Component::XUL - Easier use of XUL::Node when using POE


POE-Component-XUL documentation  | view source Contained in the POE-Component-XUL distribution.

Index


NAME

Top

POE::Component::XUL - Easier use of XUL::Node when using POE

DESCRIPTION

Top

POE::Component::XUL uses POE::XUL::SessionManager and POE::XUL::Session in a slightly different way to allow poe callbacks to your session for XUL application calls.

SYNOPSIS

	use POE qw( Component::XUL );
	use XUL::Node;
	use XUL::Node::Application;

	use base 'XUL::Node::Application';

	POE::Session->create(
		inline_states => {
			_start => sub {
				my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];

				POE::Component::XUL->spawn({
					port => 8001,
					root => '/usr/local/xul-node',
					apps => {
						# a callback
						Test => $session->callback("client_start"),
						# or a sub
						Test2 => sub {
							# code for app Test2 here
							# see client_start below
						},
					},
				});
			},
			client_start => sub {
				my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
				# the label object is kept in the heap to use it on callbacks
				return Window(
					VBox(FILL, $heap->{label} = Label(value => 'select item from list'),
						ListBox(FILL,
							(map { ListItem(label => "item #$_") } 1..10),
							Select => $session->callback('listbox_select')
						),
					),
				);
			},
			listbox_select => sub {
				my ($kernel, $heap, $session, $event) = (@_[KERNEL, HEAP, SESSION], $_[ARG1]->[0]);
				print "[".$event->{session}."] picked #".($event->{selectedIndex}+1)."\n";
				# example of doing 2 or more things in request
				# set the label text and make it change colors
				my @colors = ('red','blue','green','yellow','white','black');
				return $heap->{label}->value("you selected #".($event->{selectedIndex}+1)).
					$heap->{label}->style('color:'.$colors[(int(rand($#colors)))]);		
			},
		},
	);

	$poe_kernel->run();

DESCRIPTION

Top

POE::Component::XUL allows you to use poe callbacks in your XUL::Node apps. In its current state, XUL::Node doesn't give you a way to use POE easily in your apps, but with this component you will have the control you need.

AUTHOR

Top

David Davis, <xantus@cpan.org>

THANKS

Top

Rocco Caputo, for pushing me. :)

SEE ALSO

Top

perl(1), XUL::Node, XUL::Node::Application.


POE-Component-XUL documentation  | view source Contained in the POE-Component-XUL distribution.