def self.new(tree, keys = {})
tpath = tree.path
obj = nil
Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
obj = Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
else
(obj = self.allocate).instance_eval{
@parent = @t = tree
@tpath = tree.path
@path = @id = ''
Tk::Tile::Treeview::Item::ItemID_TBL[@tpath] ||= {}
Tk::Tile::Treeview::Item::ItemID_TBL[@tpath][@id] = self
}
end
}
obj.configure(keys) if keys && ! keys.empty?
obj
end