01: /*
02: * NEMESIS-FORUM.
03: * Copyright (C) 2002 David Laurent(lithium2@free.fr). All rights reserved.
04: *
05: * Copyright (c) 2000 The Apache Software Foundation. All rights reserved.
06: *
07: * Copyright (C) 2001 Yasna.com. All rights reserved.
08: *
09: * Copyright (C) 2000 CoolServlets.com. All rights reserved.
10: *
11: * NEMESIS-FORUM. is free software; you can redistribute it and/or
12: * modify it under the terms of the Apache Software License, Version 1.1,
13: * or (at your option) any later version.
14: *
15: * NEMESIS-FORUM core framework, NEMESIS-FORUM backoffice, NEMESIS-FORUM frontoffice
16: * application are parts of NEMESIS-FORUM and are distributed under
17: * same terms of licence.
18: *
19: *
20: * NEMESIS-FORUM includes software developed by the Apache Software Foundation (http://www.apache.org/)
21: * and software developed by CoolServlets.com (http://www.coolservlets.com).
22: * and software developed by Yasna.com (http://www.yasna.com).
23: *
24: */
25:
26: package org.nemesis.forum;
27:
28: /**
29: * Allows hierarchical navigation of a Thread. It closely follows the
30: * TreeModel interface in Swing in the hopes of being easier to use.
31: *
32: * @see ForumThread
33: */
34: public interface TreeWalker {
35:
36: /**
37: * Returns the root of the tree. Returns null only if the tree has no nodes.
38: *
39: * @returns the root of the tree
40: */
41: public Message getRoot();
42:
43: /**
44: * Returns the child of parent at index index in the parent's child array.
45: * This should not return null if index is a valid index for parent (that
46: * is index >= 0 && index < getChildCount(parent)).
47: *
48: * @param parent the parent message.
49: * @param index the index of the child.
50: * @returns the child of parent at index.
51: */
52: public Message getChild(Message parent, int index);
53:
54: /**
55: * Returns the number of children of parent. Returns 0 if the node is a
56: * leaf or if it has no children.
57: *
58: * @param parent a node in the tree, obtained from this data source.
59: * @returns the number of children of the node parent.
60: */
61: public int getChildCount(Message parent);
62:
63: /**
64: * Returns the total number of recursive children of a parent. Returns 0
65: * if there are no children. This method is not intended to aid in
66: * navigation of a Thread but is included as an added utility.
67: */
68: public int getRecursiveChildCount(Message parent);
69:
70: /**
71: * Returns the index of child in parent.
72: */
73: public int getIndexOfChild(Message parent, Message child);
74:
75: /**
76: * Returns true if node is a leaf. A node is a leaf when it has no children
77: * messages.
78: *
79: * @param node a node in the tree, obtained from this data source
80: * @returns true if node is a leaf
81: */
82: public boolean isLeaf(Message node);
83: }
|