NAME

Tickit::Widget::Tree - support for an expandable tree widget

VERSION

version 0.002

SYNOPSIS

my $tree = Tickit::Widget::Tree->new(
	is_open => 1,
	last => 1,
	label => 'Root',
	line_style => 'single',
);
$tree->add(Tickit::Widget::Tree->new(
	is_open => 1,
	last => 1,
	label => 'First',
));

DESCRIPTION

Simple tree widget. See examples in main source for more info.

METHODS

new

Instantiate new tree.

Takes the following named parameters:

  • root - the root widget for this tree (optional)

  • parent - the parent widget (optional)

  • line_style - type of line used, see "LINE STYLES" (optional, defaults to single)

  • label - the text label to use for this tree entry

prev

The 'previous element' is determined as follows:

  • If we have a previous sibling:

    • If the previous sibling is open and has children, returns the last of those

    • If the previous sibling is closed or empty, returns it (the previous sibling)

  • If we have a parent and no previous sibling(s):

    • Return the parent

  • Return ourselves

next

The 'next element' is determined as follows:

  • If we're open and have children, next is the first child element.

  • If we're closed or empty, next is the next sibling at our current level.

  • If there's no next sibling, call the parent's "next" method.

  • If there's no parent, return $self.

lines

Returns the number of lines used by this node. Will be the label height unless the widget is open.

cols

Number of cols for autocalculation. We're flexible, so we just use the default 1.

is_open

Returns true if this node is open, false if not.

If open state is undefined, then we inherit from the parent if we have one, or return 0 as a fallback.

window_gained

insert_after

Adds $v after $self.

Takes over $self->next, including backlink from $self->next->prev.

add

children

is_highlighted

prefix_text

render

Tickit::Window

highlighted

label

highlight

highlight_next

highlight_prev

rerender

root

tree_parent

update_root_and_parent

on_key

open

close

child_resized

bind_keys

on_add

line_style

is_valid_tree_node

Returns 1 if this is a valid tree node, 0 if not.

A 'valid tree node' is defined as an object which is a subclass or instance of the Tickit::Widget::Tree class.

SEE ALSO

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2011. Licensed under the same terms as Perl itself.