001/* 002 * Copyright (c) 2005 Einar Pehrson, Malin Johansson and Sofia Nilsson 003 * 004 * This file is part of 005 * CleanSheets Extension for Dependency Trees 006 * 007 * CleanSheets Extension for Dependency Trees is free software; you can 008 * redistribute it and/or modify it under the terms of the GNU General Public 009 * License as published by the Free Software Foundation; either version 2 of 010 * the License, or (at your option) any later version. 011 * 012 * CleanSheets Extension for Dependency Trees is distributed in the hope that 013 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 014 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 015 * See the GNU General Public License for more details. 016 * 017 * You should have received a copy of the GNU General Public License 018 * along with CleanSheets Extension for Dependency Trees; if not, write to the 019 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 020 * Boston, MA 02111-1307 USA 021 */ 022package csheets.ext.deptree; 023 024import java.util.SortedSet; 025import java.util.TreeSet; 026 027import javax.swing.tree.DefaultTreeModel; 028 029import csheets.core.Cell; 030 031/** 032 * A tree node for a cell, to which the cell's dependents are added dynamically 033 * when the node is expanded. 034 * @author Einar Pehrson 035 */ 036@SuppressWarnings("serial") 037public class DependentsNode extends CellNode { 038 039 /** The dependents of the node's cell. */ 040 private SortedSet<Cell> dependents = new TreeSet<Cell>(); 041 042 /** 043 * Creates a new dependents node. 044 * @param cell the cell of the node 045 * @param treeModel the data model to which the node belongs 046 */ 047 public DependentsNode(Cell cell, DefaultTreeModel treeModel) { 048 super(cell, treeModel); 049 dependents = cell.getDependents(); 050 } 051 052 protected void addChildren() { 053 for (Cell dependent : dependents) 054 add(new DependentsNode(dependent, treeModel)); 055 } 056 057 /** 058 * Returns whether the cell has references. 059 * @return true if the cell has references 060 */ 061 public boolean isLeaf() { 062 return dependents.isEmpty(); 063 } 064}