NAME POE::Component::XUL - Easier use of XUL::Node when using POE DESCRIPTION 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 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 David Davis, THANKS Rocco Caputo, for pushing me. :) SEE ALSO perl(1), XUL::Node, XUL::Node::Application.