package org.fnppl.opensdx.file_transfer.gui; /* * Copyright (C) 2010-2015 * fine people e.V. <opensdx@fnppl.org> * Henning Thieß <ht@fnppl.org> * * http://fnppl.org */ /* * Software license * * As far as this file or parts of this file is/are software, rather than documentation, this software-license applies / shall be applied. * * This file is part of openSDX * openSDX is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * openSDX is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * and GNU General Public License along with openSDX. * If not, see <http://www.gnu.org/licenses/>. * */ /* * Documentation license * * As far as this file or parts of this file is/are documentation, rather than software, this documentation-license applies / shall be applied. * * This file is part of openSDX. * Permission is granted to copy, distribute and/or modify this document * under the terms of the GNU Free Documentation License, Version 1.3 * or any later version published by the Free Software Foundation; * with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. * A copy of the license is included in the section entitled "GNU * Free Documentation License" resp. in the file called "FDL.txt". * */ import java.util.Vector; import javax.swing.tree.DefaultMutableTreeNode; import org.fnppl.opensdx.file_transfer.model.RemoteFile; public class TreeAndTableNode extends DefaultMutableTreeNode { private TreeAndTableChildrenGetter main; private String name; private boolean populated; private boolean interim; private boolean canPopulate; public Vector<RemoteFile> files = null; public TreeAndTableNode(TreeAndTableChildrenGetter main, String name, boolean canPopulate, Object userObject) { this.main = main; this.name = name; this.canPopulate = canPopulate; setUserObject(userObject); } public boolean isLeaf() { return !canPopulate; } public boolean getAllowsChildren() { return canPopulate; } public String toString() { return name; } public boolean populateAgain() { populated = false; interim = true; return populate(); } public boolean populate() { if (!populated) { System.out.println("populate "+name); if (interim) { removeAllChildren(); //remove dummy node interim = false; } Vector<TreeAndTableNode> nodes = main.getChildren(this); if (nodes!=null) { populated = true; if (nodes.size()>0) { for (TreeAndTableNode n : nodes) { this.add(n); } } } else { interim = true; } } return populated; } }