aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/ui/Tree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/ui/Tree.java')
-rw-r--r--src/com/itmill/toolkit/ui/Tree.java44
1 files changed, 24 insertions, 20 deletions
diff --git a/src/com/itmill/toolkit/ui/Tree.java b/src/com/itmill/toolkit/ui/Tree.java
index 36b34ac50a..20c7e03961 100644
--- a/src/com/itmill/toolkit/ui/Tree.java
+++ b/src/com/itmill/toolkit/ui/Tree.java
@@ -32,8 +32,8 @@ import com.itmill.toolkit.terminal.Resource;
import com.itmill.toolkit.terminal.gwt.client.MouseEventDetails;
/**
- * MenuTree component. MenuTree can be used to select an item (or multiple
- * items) from a hierarchical set of items.
+ * Tree component. A Tree can be used to select an item (or multiple items) from
+ * a hierarchical set of items.
*
* @author IT Mill Ltd.
* @version
@@ -72,7 +72,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
/**
* List of action handlers.
*/
- private LinkedList actionHandlers = null;
+ private LinkedList<Action.Handler> actionHandlers = null;
/**
* Action mapper.
@@ -396,10 +396,9 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
final Action action = (Action) actionMapper.get(st.nextToken());
if (action != null && containsId(itemId)
&& actionHandlers != null) {
- for (final Iterator i = actionHandlers.iterator(); i
- .hasNext();) {
- ((Action.Handler) i.next()).handleAction(action, this,
- itemId);
+ for (final Iterator<Action.Handler> i = actionHandlers
+ .iterator(); i.hasNext();) {
+ i.next().handleAction(action, this, itemId);
}
}
}
@@ -448,7 +447,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
}
// Initialize variables
- final Set actionSet = new LinkedHashSet();
+ final Set<Action> actionSet = new LinkedHashSet<Action>();
String[] selectedKeys;
if (isMultiSelect()) {
selectedKeys = new String[((Set) getValue()).size()];
@@ -459,7 +458,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
final LinkedList expandedKeys = new LinkedList();
// Iterates through hierarchical tree using a stack of iterators
- final Stack iteratorStack = new Stack();
+ final Stack<Iterator> iteratorStack = new Stack<Iterator>();
Collection ids;
if (partialUpdate) {
ids = getChildren(expandedItemId);
@@ -474,7 +473,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
while (!iteratorStack.isEmpty()) {
// Gets the iterator for current tree level
- final Iterator i = (Iterator) iteratorStack.peek();
+ final Iterator i = iteratorStack.peek();
// If the level is finished, back to previous tree level
if (!i.hasNext()) {
@@ -527,11 +526,11 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
// Actions
if (actionHandlers != null) {
- final ArrayList keys = new ArrayList();
- for (final Iterator ahi = actionHandlers.iterator(); ahi
- .hasNext();) {
- final Action[] aa = ((Action.Handler) ahi.next())
- .getActions(itemId, this);
+ final ArrayList<String> keys = new ArrayList<String>();
+ final Iterator<Action.Handler> ahi = actionHandlers
+ .iterator();
+ while (ahi.hasNext()) {
+ final Action[] aa = ahi.next().getActions(itemId, this);
if (aa != null) {
for (int ai = 0; ai < aa.length; ai++) {
final String akey = actionMapper.key(aa[ai]);
@@ -561,8 +560,9 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
if (!actionSet.isEmpty()) {
target.addVariable(this, "action", "");
target.startTag("actions");
- for (final Iterator i = actionSet.iterator(); i.hasNext();) {
- final Action a = (Action) i.next();
+ final Iterator<Action> i = actionSet.iterator();
+ while (i.hasNext()) {
+ final Action a = i.next();
target.startTag("action");
if (a.getCaption() != null) {
target.addAttribute("caption", a.getCaption());
@@ -577,6 +577,10 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
}
if (partialUpdate) {
+ // update tree-level selection information in case some selected
+ // node(s) were collapsed
+ target.addVariable(this, "selected", selectedKeys);
+
partialUpdate = false;
} else {
// Selected
@@ -899,7 +903,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
if (actionHandler != null) {
if (actionHandlers == null) {
- actionHandlers = new LinkedList();
+ actionHandlers = new LinkedList<Action.Handler>();
actionMapper = new KeyMapper();
}
@@ -941,7 +945,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
final LinkedList visible = new LinkedList();
// Iterates trough hierarchical tree using a stack of iterators
- final Stack iteratorStack = new Stack();
+ final Stack<Iterator> iteratorStack = new Stack<Iterator>();
final Collection ids = rootItemIds();
if (ids != null) {
iteratorStack.push(ids.iterator());
@@ -949,7 +953,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
while (!iteratorStack.isEmpty()) {
// Gets the iterator for current tree level
- final Iterator i = (Iterator) iteratorStack.peek();
+ final Iterator i = iteratorStack.peek();
// If the level is finished, back to previous tree level
if (!i.hasNext()) {