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");

Reply via email to