cvsuser 02/06/07 15:45:38
Added: P5EEx/Blue/P5EEx/Blue/Widget/HTML TabSet.pm
TabbedAppFrame.pm TabbedView.pm
Log:
new file
Revision Changes Path
1.1 p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/TabSet.pm
Index: TabSet.pm
===================================================================
######################################################################
## $Id: TabSet.pm,v 1.1 2002/06/07 22:45:38 spadkins Exp $
######################################################################
package P5EEx::Blue::Widget::HTML::TabSet;
$VERSION = do { my @r=(q$Revision: 1.1 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::P5EE;
use P5EEx::Blue::Widget::HTML;
@ISA = ( "P5EEx::Blue::Widget::HTML" );
use strict;
=head1 NAME
P5EEx::Blue::Widget::HTML::TabSet - An application frame.
=head1 SYNOPSIS
$name = "office";
# official way
use Widget;
$context = P5EEx::Blue::P5EE->context();
$w = $context->widget($name);
# internal way
use P5EEx::Blue::Widget::HTML::TabSet;
$w = P5EEx::Blue::Widget::HTML::TabSet->new($name);
=cut
######################################################################
# CONSTANTS
######################################################################
######################################################################
# ATTRIBUTES
######################################################################
# INPUTS FROM THE ENVIRONMENT
=head1 DESCRIPTION
This class implements an application frame.
This includes a menu, an application toolbar, a screen selector,
a screen title, a screen toolbar, and
a screen frame. The application is actually implemented by the set
of screens that the application frame is configured to allow navigation
to.
The application frame can implement itself in frames if it is
configured to do so. Otherwise, it implements itself as a table.
=cut
######################################################################
# INITIALIZATION
######################################################################
# no special initialization
######################################################################
# EVENTS
######################################################################
sub handle_event {
my ($self, $wname, $event, @args) = @_;
my ($context, $name, $node);
my ($selector_widget, $screen_wname, $screen_widget, $screen_settings);
my ($screen_msg, $target);
$name = $self->{name};
$context = $self->{context};
if ($wname eq "$name.selector" && $event eq "select") {
$selector_widget = $context->widget("$name.selector");
$screen_wname = $selector_widget->get_selected("wname");
$screen_widget = $context->widget($screen_wname);
$screen_settings = $selector_widget->get_selected("set");
$self->{context}->dbgprint("TabSet->handle_event($wname, $event, @args):
$screen_settings [",
join(",",%$screen_settings), "]")
if ($P5EEx::Blue::DEBUG && $self->{context}->dbg(1));
if ($screen_settings) {
foreach (keys %$screen_settings) {
$screen_widget->set($_, $screen_settings->{$_});
}
return 1;
}
$screen_msg = $selector_widget->get_selected("send");
if ($screen_msg && ref($screen_msg) eq "ARRAY" && $#$screen_msg >= 1) {
my ($target_widget, $target_wname, $method, @args);
($target_wname, $method, @args) = @$screen_msg;
$target_widget = $context->widget($target_wname);
$target_widget->$method(@args);
}
my $frame = $selector_widget->get_selected("frame");
if (defined $frame) {
my ($key);
foreach $key (keys %$frame) {
$self->set($key,$frame->{$key});
}
}
my $target = $selector_widget->get_selected("target");
if ($target) {
$main::target = $target;
}
$self->{noframe} = $selector_widget->get_selected("noframe");
return 1;
}
else {
return $self->SUPER::handle_event($wname, $event, @args);
}
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my ($context, $name, $html);
$name = $self->{name};
$context = $self->{context};
my ($selector_widget, $selector);
my ($screen_wname, $screen, $screen_widget, $screen_bgcolor);
if (1) { # view as table
$selector_widget = $context->widget("$name.selector",
widgetClass =>
"P5EEx::Blue::Widget::HTML::TabbedView",
);
$selector = $selector_widget->display();
$screen_wname = $selector_widget->get_selected("wname");
if ($screen_wname) {
$screen_widget = $context->widget($screen_wname);
$screen = $screen_widget->display();
$screen_bgcolor = $screen_widget->get("bgcolor","#cccccc");
}
else {
$screen = " ";
$screen_bgcolor = "#cccccc";
}
if ($self->{noframe}) {
return $screen; # no need to generate a frame
}
$html = <<EOF;
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
$selector
</td>
<td valign="top" bgcolor="$screen_bgcolor">
$screen
</td>
</tr>
</table>
EOF
}
$html;
}
1;
1.1 p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/TabbedAppFrame.pm
Index: TabbedAppFrame.pm
===================================================================
######################################################################
## $Id: TabbedAppFrame.pm,v 1.1 2002/06/07 22:45:38 spadkins Exp $
######################################################################
package P5EEx::Blue::Widget::HTML::TabbedAppFrame;
$VERSION = do { my @r=(q$Revision: 1.1 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::P5EE;
use P5EEx::Blue::Widget::HTML;
@ISA = ( "P5EEx::Blue::Widget::HTML" );
use strict;
=head1 NAME
P5EEx::Blue::Widget::HTML::TabbedAppFrame - An application frame.
=head1 SYNOPSIS
$name = "office";
# official way
use Widget;
$context = P5EEx::Blue::P5EE->context();
$w = $context->widget($name);
# internal way
use P5EEx::Blue::Widget::HTML::TabbedAppFrame;
$w = P5EEx::Blue::Widget::HTML::TabbedAppFrame->new($name);
=cut
######################################################################
# CONSTANTS
######################################################################
######################################################################
# ATTRIBUTES
######################################################################
# INPUTS FROM THE ENVIRONMENT
=head1 DESCRIPTION
This class implements an application frame.
This includes a menu, an application toolbar, a screen selector,
a screen title, a screen toolbar, and
a screen frame. The application is actually implemented by the set
of screens that the application frame is configured to allow navigation
to.
The application frame can implement itself in frames if it is
configured to do so. Otherwise, it implements itself as a table.
=cut
######################################################################
# INITIALIZATION
######################################################################
# no special initialization
######################################################################
# EVENTS
######################################################################
sub handle_event {
my ($self, $wname, $event, @args) = @_;
my ($context, $name, $node);
my ($selector_widget, $screen_wname, $screen_widget, $screen_settings);
my ($screen_msg, $target);
$name = $self->{name};
$context = $self->{context};
if ($wname eq "$name.selector" && $event eq "select") {
$selector_widget = $context->widget("$name.selector");
$screen_wname = $selector_widget->get_selected("wname");
$screen_widget = $context->widget($screen_wname);
$screen_settings = $selector_widget->get_selected("set");
$self->{context}->dbgprint("TabbedAppFrame->handle_event($wname, $event,
@args): $screen_settings [",
join(",",%$screen_settings), "]")
if ($P5EEx::Blue::DEBUG && $self->{context}->dbg(1));
if ($screen_settings) {
foreach (keys %$screen_settings) {
$screen_widget->set($_, $screen_settings->{$_});
}
return 1;
}
$screen_msg = $selector_widget->get_selected("send");
if ($screen_msg && ref($screen_msg) eq "ARRAY" && $#$screen_msg >= 1) {
my ($target_widget, $target_wname, $method, @args);
($target_wname, $method, @args) = @$screen_msg;
$target_widget = $context->widget($target_wname);
$target_widget->$method(@args);
}
my $frame = $selector_widget->get_selected("frame");
if (defined $frame) {
my ($key);
foreach $key (keys %$frame) {
$self->set($key,$frame->{$key});
}
}
my $target = $selector_widget->get_selected("target");
if ($target) {
$main::target = $target;
}
$self->{noframe} = $selector_widget->get_selected("noframe");
return 1;
}
else {
return $self->SUPER::handle_event($wname, $event, @args);
}
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my ($context, $name, $html);
$name = $self->{name};
$context = $self->{context};
my ($menu, $toolbar, $screentitle, $screentoolbar);
my ($selector_widget, $selector, $selector_bgcolor);
my ($screen_wname, $screen, $screen_widget, $screen_bgcolor);
my ($screentitle_widget, $screentitle_bgcolor, $screentitle_value);
if (1) { # view as table
$menu = $context->widget("$name.menu",
widgetClass => "P5EEx::Blue::Widget::HTML::Menu",
)->display();
$toolbar = $context->widget("$name.toolbar",
widgetClass => "P5EEx::Blue::Widget::HTML::Toolbar",
)->display();
$screentoolbar = $context->widget("$name.screentoolbar",
widgetClass => "P5EEx::Blue::Widget::HTML::Toolbar",
)->display();
$selector_widget = $context->widget("$name.selector",
widgetClass =>
"P5EEx::Blue::Widget::HTML::SelectorView",
);
$selector_bgcolor = "#cccccc";
$selector = $selector_widget->display();
$screen_wname = $selector_widget->get_selected("wname");
if ($screen_wname) {
$screen_widget = $context->widget($screen_wname);
$screentitle_value = $selector_widget->get_selected("value");
$screentitle_value = $screen_widget->label() if (!$screentitle_value);
$screen = $screen_widget->display();
$screen_bgcolor = $screen_widget->get("bgcolor");
$screen_bgcolor = "#ffffff" if (!defined $screen_bgcolor);
}
else {
$screentitle_value = " ";
$screen = " ";
$screen_bgcolor = "#cccccc";
}
if ($self->{noframe}) {
return $screen; # no need to generate a frame
}
#$screentitle_widget = $context->widget("$name.screentitle",
# -label => $screentitle_value,
# -bgcolor => "#888888",
#);
#$screentitle_bgcolor = $screentitle_widget->get("bgcolor");
#$screentitle = $screentitle_widget->display();
$screentitle_bgcolor = "#888888";
$screentitle = "<font face=verdana,geneva,arial,sans-serif size=+1
color=#ffffff>$screentitle_value</font>";
# <tr>
# <td colspan="2" valign="top" height="1%">
# $menu
# </td>
# </tr>
# <tr>
# <td colspan="2" valign="top" height="1%">
# $toolbar
# </td>
# </tr>
# <tr>
# <td valign="top" height="1%">
# $screentoolbar
# </td>
# </tr>
my ($messages, $messagebox);
$messages = $context->{messages};
$messagebox = "";
if (defined $messages && $messages ne "") {
my ($elem_begin, $elem_end, $fontFace, $fontSize, $fontColor);
$fontFace = $self->{fontFace} || "verdana,geneva,arial,sans-serif";
$fontSize = $self->{fontSize} || "+1";
$fontColor = $self->{fontColor};
$elem_begin = "";
$elem_end = "";
if ($fontFace || $fontSize || $fontColor) {
$elem_begin = "<font";
$elem_begin .= " face=\"$fontFace\"" if ($fontFace);
$elem_begin .= " size=\"" . ($fontSize+1) . "\"" if ($fontSize);
$elem_begin .= " color=\"$fontColor\"" if ($fontColor);
$elem_begin .= ">";
$elem_end = "</font>";
}
$messagebox = <<EOF;
<table width=100% border=0 cellspacing=0 cellpadding=4>
<TR>
<TD>
<table width=100% border=0 cellspacing=0 cellpadding=4>
<TR>
<TD class=body_sub1 valign=top align=left
bgcolor=#ffaaaa>$elem_begin<B>Messages</B>$elem_end</TD>
</TR>
<TR>
<TD valign=top align=left class=body_sub2>
$elem_begin$messages$elem_end
</TD>
</TR>
<TR>
<TD valign=top align=left height=4></TD>
</TR>
</table>
</td>
</tr>
</table>
EOF
}
$html = <<EOF;
<table width="100%" border="2" cellspacing="2" cellpadding="0">
<tr>
<td valign="top" bgcolor="$screentitle_bgcolor">
$screentitle
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" bgcolor="$selector_bgcolor">
$selector
</td>
</tr>
<tr>
<td valign="top" bgcolor="$screen_bgcolor">
$messagebox$screen
</td>
</tr>
</table>
EOF
}
$html;
}
1;
1.1 p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/TabbedView.pm
Index: TabbedView.pm
===================================================================
######################################################################
## $Id: TabbedView.pm,v 1.1 2002/06/07 22:45:38 spadkins Exp $
######################################################################
package P5EEx::Blue::Widget::HTML::TabbedView;
$VERSION = do { my @r=(q$Revision: 1.1 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::P5EE;
use P5EEx::Blue::Widget::HTML::HierView;
@ISA = ( "P5EEx::Blue::Widget::HTML::HierView" );
use strict;
=head1 NAME
P5EEx::Blue::Widget::HTML::TabbedView - A screen selector widget
=head1 SYNOPSIS
use P5EEx::Blue::Widget::HTML::TabbedView;
$name = "get_data";
$w = P5EEx::Blue::Widget::HTML::TabbedView->new($name);
print $w->display();
=cut
=head1 DESCRIPTION
This class implements a screen selector view such as is used in
M$ Outlook.
=cut
######################################################################
# INITIALIZATION
######################################################################
sub init {
my $self = shift;
$self->SUPER::init(@_);
if (! $self->get("selected")) {
$self->select_first();
}
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my ($context, $name, $node, $html, $label, $icon);
$context = $self->{context};
$name = $self->{name};
$node = $self->get("node");
my ($bgcolor, $width, $fontface, $fontsize, $fontcolor, $fontbegin, $fontend);
$bgcolor = $self->get("bgcolor", "#888888");
$width = $self->get("width", "100%");
$fontface = $self->get("fontface", "verdana,geneva,arial,sans-serif");
$fontsize = $self->get("fontsize", "-2");
$fontcolor = $self->get("fontcolor", "#ffffff");
#$fontbegin = "<font face=\"$fontface\" size=\"$fontsize\"
color=\"$fontcolor\">";
#$fontend = "</font>";
my ($nodebase, $nodeidx, $nodenumber, $nodelabel, $parentnodenumber, $nodelevel,
$opennodenumber);
my (@nodeidx, $selected_nodenumber, $w);
$selected_nodenumber = $self->{selected};
@nodeidx = split(/\./,$selected_nodenumber);
$html = '<table border="0" cellpadding="0" cellspacing="0" width="100%">' . "\n";
$nodebase = "";
for ($nodelevel = 0; $nodelevel <= $#nodeidx; $nodelevel++) {
$html .= " <tr><td nowrap>";
$nodeidx = 1;
$nodenumber = "$nodebase$nodeidx"; # create its node number
while (defined $node->{$nodenumber}) {
$label = $node->{$nodenumber}{label};
$label = $node->{$nodenumber}{value} if (!defined $label);
$label = "" if (!defined $label);
$w = $context->widget("$name.button$nodenumber",
widgetClass => "P5EEx::Blue::Widget::HTML::ImageButton",
imageScript => "button",
lightweight => 1,
height => "19",
width => "127",
bevel => "2",
label => $label,
eventTarget => $name,
event => "open_exclusively",
args => $nodenumber,
type => "tab",
);
#$w->set("selected", $node->{$nodenumber}{open} ? 1 : 0);
if ($node->{$nodenumber}{open}) {
$w->set("selected", 1);
}
else {
$w->set("selected", 0);
}
$html .= $w->display();
$html .= "<!--\n -->";
$nodeidx++;
$nodenumber = "$nodebase$nodeidx"; # create its node number
}
$nodebase .= "$nodeidx[$nodelevel].";
$html .= "</td>\n </tr>\n";
}
$html .= "</table>\n";
$html;
}
1;