######################################################################
## $Id: TablessSelector.pm 7953 2006-10-16 19:16:56Z spadkins $
######################################################################
package App::Widget::TablessSelector;
$VERSION = (q$Revision: 7953 $ =~ /(\d[\d\.]*)/)[0]; # VERSION numbers generated by svn
use App;
use App::Widget::HierSelector;
@ISA = ( "App::Widget::HierSelector" );
use strict;
=head1 NAME
App::Widget::TablessSelector - A screen selector widget
=head1 SYNOPSIS
use App::Widget::TablessSelector;
$name = "get_data";
$w = App::Widget::TablessSelector->new($name);
print $w->html();
=cut
=head1 DESCRIPTION
This class implements a screen selector.
=cut
######################################################################
# INITIALIZATION
######################################################################
sub _init {
my $self = shift;
$self->SUPER::_init(@_);
if (! $self->{selected}) {
$self->select_first();
}
}
sub select {
my ($self, $nodeattrib, $value) = @_;
my $success = $self->SUPER::select($nodeattrib, $value);
$self->open_selected_exclusively();
return($success);
}
sub open_exclusively {
my ($self, $opennodenumber) = @_;
#$self->{debug} .= "open_exclusively($opennodenumber)
";
$self->SUPER::open_exclusively($opennodenumber);
$self->select_first_open_leaf($opennodenumber);
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my ($html, $label, $icon);
my $context = $self->{context};
my $name = $self->{name};
my $node = $self->node_list();
my ($bgcolor, $width, $fontface, $fontsize, $fontcolor, $fontbegin, $fontend);
my ($html_url_dir, $xgif);
$bgcolor = $self->{bgcolor} || "#cccccc";
$width = $self->{width} || "100%";
$fontface = $self->{fontface} || "verdana,geneva,arial,sans-serif";
$fontsize = $self->{fontsize} || "-2";
$fontcolor = $self->{fontcolor} || "#ffffff";
$bgcolor = "";
my ($nodebase, $nodeidx, $nodenumber, $nodelabel, $parentnodenumber, $nodelevel, $opennodenumber);
my (@nodeidx, $selected_nodenumber, $w);
$selected_nodenumber = $self->{selected};
@nodeidx = split(/\./,$selected_nodenumber);
$html_url_dir = $context->get_option("html_url_dir");
$xgif = "$html_url_dir/images/Widget/dot_clear.gif";
$html = $self->{debug} || "";
$nodelevel = 0;
$nodebase = "";
if (defined $node->{1} && !defined $node->{2}) {
$nodelevel = 1;
$nodebase = "1.";
}
my $auth = $context->authorization();
my ($auth_name);
for (; $nodelevel <= $#nodeidx; $nodelevel++) {
$html .= '
| "; $nodeidx = 1; $nodenumber = "$nodebase$nodeidx"; # create its node number while (defined $node->{$nodenumber}) { $auth_name = $node->{$nodenumber}{auth_name}; if (!$auth_name || $auth->is_authorized("/App/SessionObject/$name/$auth_name")) { $label = $node->{$nodenumber}{label}; $label = $node->{$nodenumber}{value} if (!defined $label); $label = "" if (!defined $label); } $nodeidx++; $nodenumber = "$nodebase$nodeidx"; # create its node number } $nodebase .= "$nodeidx[$nodelevel]."; $html .= " | \n"; $html .= "\n"; $html .= " | |