Author: spadkins
Date: Mon Oct 16 11:28:29 2006
New Revision: 7948
Modified:
p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm
p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm
Log:
can use symbolic tags for the selected node
Modified: p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm Mon Oct 16
11:28:29 2006
@@ -251,6 +251,14 @@
$nodenumber = "$nodebase.$nodeidx";
if (!defined $node->{$nodenumber}) {
if ($nodeidx == 1) { # there are no leaves. $nodebase must be a
leaf.
+
+ if ( $nodebase =~ /([0-9\.]+)\.[0-9]+$/ ) {
+ my $node_num = $1;
+ foreach my $key (keys %$node) { $node->{$key}{open} = 0;
}
+ $node->{$node_num}{open} = 1;
+ $node->{$nodebase}{open} = 1;
+ }
+
$self->set("selected", $nodebase);
$found = 1;
}
@@ -268,7 +276,7 @@
$nodeidx++;
}
}
- #$self->{debug} .= "select_first_open_leaf($selected_nodenumber):
[$nodenumber]<br>";
+ $self->{debug} .= "select_first_open_leaf($selected_nodenumber):
[$nodenumber]<br>";
}
######################################################################
@@ -279,14 +287,37 @@
my ($self, $nodeattrib) = @_;
my ($nodenumber);
- $nodenumber = $self->get("selected");
+ $nodenumber = $self->{selected}; # might be a tag or a nodenumber
+
return undef if (!defined $nodenumber);
return $nodenumber if (!defined $nodeattrib);
my $node = $self->node_list();
+ $nodenumber = $self->get_tag_nodenumber($nodenumber);
+
return $node->{$nodenumber}{$nodeattrib};
}
+sub get_tag_nodenumber {
+ my ($self, $tag) = @_;
+
+ my $node = $self->node_list();
+
+ my ($nodenumber);
+ if ($tag !~ /^\d+/) { # if $tag is not a $nodenumber already ...
+ foreach my $nodenum (keys %$node) {
+ if ( $node->{$nodenum}{tag} && $node->{$nodenum}{tag} eq $tag) {
+ $nodenumber = $nodenum;
+ last;
+ }
+ }
+ }
+ else {
+ $nodenumber = $tag;
+ }
+ return $nodenumber;
+}
+
######################################################################
# OUTPUT METHODS
######################################################################
@@ -310,7 +341,6 @@
$nodeidx = pop(@nextnodeidx);
$nodelevel = pop(@nextnodelevel);
$nodenumber = "$nodebase$nodeidx"; # create its node number
-
if (defined $node->{$nodenumber}) { # if the node exists...
$label = $node->{$nodenumber}{label};
$label = $node->{$nodenumber}{value} if (!defined $label);
Modified: p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm Mon Oct 16
11:28:29 2006
@@ -84,6 +84,8 @@
my (@nodeidx, $selected_nodenumber, $w);
$selected_nodenumber = $self->{selected};
+ $selected_nodenumber = $self->get_tag_nodenumber($selected_nodenumber);
+
@nodeidx = split(/\./,$selected_nodenumber);
my $html_url_dir = $context->get_option("html_url_dir");