use of org.eclipse.jface.viewers.TreeNode in project hale by halestudio.
the class TaskCountLabelProvider method getTaskCount.
/**
* Get the given node's task count
*
* @param node the node
*
* @return the task count
*/
private int getTaskCount(MapTreeNode<?, ?> node) {
int count = 0;
TreeNode[] children = node.getChildren();
for (TreeNode child : children) {
if (child instanceof DefaultTreeNode) {
// child is task node
DefaultTreeNode childNode = (DefaultTreeNode) child;
Object tmp = childNode.getValue();
// get value
Object value;
if (tmp.getClass().isArray()) {
value = ((Object[]) tmp)[index];
} else {
value = tmp;
}
// add task to count if it is open
if (value instanceof ResolvedTask && ((ResolvedTask<?>) value).isOpen()) {
count++;
}
} else if (child instanceof MapTreeNode<?, ?>) {
// child is map node
MapTreeNode<?, ?> childNode = (MapTreeNode<?, ?>) child;
count += getTaskCount(childNode);
}
}
return count;
}
use of org.eclipse.jface.viewers.TreeNode in project hale by halestudio.
the class TaskTreeView method createInput.
/**
* Update the view
*/
private void createInput() {
TaskService taskService = HaleUI.getServiceProvider().getService(TaskService.class);
final Collection<TreeNode> input = new ArrayList<TreeNode>();
cellNode = new MapTreeNode<Cell, MapTreeNode<ResolvedTask<Cell>, TreeNode>>("Cell messages");
input.add(cellNode);
Collection<ResolvedTask<?>> tasks = taskService.getResolvedTasks();
for (ResolvedTask<?> task : tasks) {
addTask(task);
}
tree.setInput(input);
}
use of org.eclipse.jface.viewers.TreeNode in project hale by halestudio.
the class TaskTreeView method updateNode.
/**
* Update the node label for the given task
*
* @param task the task
*/
protected void updateNode(ResolvedTask<?> task) {
DefaultTreeNode node = taskNodes.get(task.getTask());
if (node != null) {
node.setValues(task);
// refresh parent instead of update node (sorting) -
// tree.update(node, null);
// update parent nodes
TreeNode parent = node.getParent();
if (parent != null) {
tree.refresh(parent, true);
parent = parent.getParent();
} else {
tree.update(node, null);
}
while (parent != null) {
tree.update(parent, null);
parent = parent.getParent();
}
}
}
use of org.eclipse.jface.viewers.TreeNode in project hale by halestudio.
the class TaskTreeView method removeTask.
/**
* Remove a task
*
* @param task the task to remove
*/
@SuppressWarnings("unchecked")
private void removeTask(Task<?> task) {
DefaultTreeNode node = taskNodes.get(task);
if (node != null) {
// remove task from model
MapTreeNode<ResolvedTask<?>, TreeNode> parent = (MapTreeNode<ResolvedTask<?>, TreeNode>) node.getParent();
if (parent != null) {
parent.removeChildNode(node);
taskNodes.remove(task);
// remove empty nodes
if (!parent.hasChildren()) {
MapTreeNode<Cell, MapTreeNode<ResolvedTask<?>, TreeNode>> root = (MapTreeNode<Cell, MapTreeNode<ResolvedTask<?>, TreeNode>>) parent.getParent();
root.removeChildNode(parent);
tree.refresh(root, true);
} else {
tree.refresh(parent, true);
// update icons
TreeNode updateNode = parent.getParent();
while (updateNode != null) {
tree.update(updateNode, null);
updateNode = updateNode.getParent();
}
}
}
}
}
use of org.eclipse.jface.viewers.TreeNode in project hale by halestudio.
the class TaskTreeView method update.
/**
* Update the view with the given selection
*
* @param selection the selection
*/
public void update(ISelection selection) {
if (selection instanceof IStructuredSelection) {
Object element = ((IStructuredSelection) selection).getFirstElement();
if (element instanceof Cell) {
Collection<Task<Cell>> tasks = taskService.getTasks((Cell) element);
if (!tasks.isEmpty()) {
ResolvedTask<Cell> rt = taskService.resolveTask(tasks.iterator().next());
MapTreeNode<?, TreeNode> cellNode = getParentNode(rt, false);
tree.setSelection(new StructuredSelection(cellNode));
tree.expandToLevel(cellNode, TreeViewer.ALL_LEVELS);
}
}
} else {
tree.setInput(null);
}
}
Aggregations