cvsuser 05/08/11 06:48:46
Added: App-Widget/lib/App/Widget ImageBarSelector.pm
Log:
new
Revision Changes Path
1.1 p5ee/App-Widget/lib/App/Widget/ImageBarSelector.pm
Index: ImageBarSelector.pm
===================================================================
######################################################################
## $Id: ImageBarSelector.pm,v 1.1 2005/08/11 13:48:46 spadkins Exp $
######################################################################
package App::Widget::ImageBarSelector;
$VERSION = do { my @r=(q$Revision: 1.1 $=~/\d+/g); sprintf
"%d."."%02d"x$#r,@r};
use App;
use App::Widget::HierSelector;
@ISA = ( "App::Widget::HierSelector" );
use strict;
=head1 NAME
App::Widget::ImageBarSelector - A screen selector widget
=head1 SYNOPSIS
use App::Widget::ImageBarSelector;
$name = "get_data";
$w = App::Widget::ImageBarSelector->new($name);
print $w->html();
=cut
=head1 DESCRIPTION
This class implements a widget selector which is implemented as a
set of images side-by-side in an image-bar with a padding image
filling out the full width.
=cut
######################################################################
# INITIALIZATION
######################################################################
sub _init {
my $self = shift;
$self->SUPER::_init(@_);
if (! $self->get("selected")) {
$self->select_first();
}
}
sub select {
my ($self, $nodeattrib, $value) = @_;
my $success = $self->SUPER::select($nodeattrib, $value);
$self->open_selected_exclusively();
return($success);
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my $context = $self->{context};
my $name = $self->{name};
my $node = $self->{node};
my $pad = $self->{pad};
my $theme = $context->so_get("theme") || $context->{options}{theme} ||
"app";
my ($width, $height);
my $html = "";
my ($nodebase, $nodeidx, $nodenumber, $nodelabel, $parentnodenumber,
$nodelevel, $opennodenumber);
my (@nodeidx, $selected_nodenumber, $w);
$selected_nodenumber = $self->{selected};
@nodeidx = split(/\./,$selected_nodenumber);
my $html_url_dir = $context->get_option("html_url_dir");
$html = "";
$nodelevel = 0;
$nodebase = "";
if (defined $node->{1} && !defined $node->{2}) {
$nodelevel = 1;
$nodebase = "1.";
}
my (@args, $table_dims);
for (; $nodelevel <= $#nodeidx; $nodelevel++) {
$table_dims = " width=\"100%\"";
$table_dims = " width=\"$self->{width}\"" if ($self->{width});
$html .= "<table border=\"0\" cellpadding=\"0\"
cellspacing=\"0\"${table_dims}>\n";
$html .= " <tr>";
$nodeidx = 1;
$nodenumber = "$nodebase$nodeidx"; # create its node number
while (defined $node->{$nodenumber}) {
@args = ();
push(@args, height => $node->{$nodenumber}{height}) if
($node->{$nodenumber}{height});
push(@args, width => $node->{$nodenumber}{width}) if
($node->{$nodenumber}{width});
push(@args, label => $node->{$nodenumber}{label}) if
($node->{$nodenumber}{label});
push(@args, image => $node->{$nodenumber}{image}) if
($node->{$nodenumber}{image});
$w = $context->widget("$name-button$nodenumber",
class => "App::Widget::ImageButton",
volatile => 1,
event_target => $name,
event => "open_exclusively",
args => $nodenumber,
@args
);
if ($node->{$nodenumber}{open}) {
$w->set("selected", 1);
$w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{selected_image});
}
else {
$w->set("selected", 0);
$w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{image});
}
$html .= "<td width=\"1%\">";
$html .= $w->html();
$html .= "</td>\n";
$nodeidx++;
$nodenumber = "$nodebase$nodeidx"; # create its node number
}
$nodebase .= "$nodeidx[$nodelevel].";
if ($pad) {
my $td_dims = "";
my $image_dims = "";
if ($pad->{height}) {
$td_dims .= " height=\"$pad->{height}\"";
$image_dims .= " height=\"$pad->{height}\"";
}
if ($pad->{width}) {
$td_dims .= " width=\"$pad->{width}\"";
$image_dims .= " width=\"$pad->{width}\"";
}
else {
$td_dims .= " width=\"99%\"";
$image_dims .= " width=\"99%\"";
}
my $bgimage = "$html_url_dir/theme/$theme/" . $pad->{image};
$html .= "<td${td_dims} background=\"$bgimage\"><img
src=\"$bgimage\" border=\"0\"${image_dims}></td>\n";
}
else {
$html .= "<td width=\"99%\"> </td>\n";
}
$html .= " </tr>\n";
$html .= "</table>\n";
}
$html;
}
1;