/* This is free and unencumbered software released into the public domain. * * Anyone is free to copy, modify, publish, use, compile, sell, or * distribute this software, either in source code form or as a compiled * binary, for any purpose, commercial or non-commercial, and by any * means. * * In jurisdictions that recognize copyright laws, the author or authors * of this software dedicate any and all copyright interest in the * software to the public domain. We make this dedication for the benefit * of the public at large and to the detriment of our heirs and * successors. We intend this dedication to be an overt act of * relinquishment in perpetuity of all present and future rights to this * software under copyright law. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * For more information, please refer to */ package org.autoplot.fdc; import java.time.ZonedDateTime; import java.util.logging.Logger; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import org.das2.catalog.DasDirNode; import org.das2.catalog.DasNode; import org.das2.util.LoggerManager; /** * * @author cwp */ public class FedCatTreeModel extends DefaultTreeModel { private static final Logger LOGGER = LoggerManager.getLogger("apdss.dc"); private static class DasCatTreeNode extends DefaultMutableTreeNode { DasNode node; DasCatTreeNode(DasNode node){ this.node = node; } @Override public String toString(){ String sRet = ""; if(node.name() != null) sRet = ""+node.name()+""; String s = node.prop("title").str(); //<-- FIXME: triggers network activity if(s != null) sRet += " "+s; return sRet; } } public FedCatTreeModel(DasNode dasRoot) { super(new DasCatTreeNode(dasRoot), true); // true = not all nodes can have children } @Override public boolean isLeaf(Object treenode){ DasNode node = ((DasCatTreeNode)treenode).node; return ! node.isDir(); } @Override public int getChildCount(Object parent){ DasNode node = ((DasCatTreeNode)parent).node; if(node.isDir()){ DasDirNode dir = (DasDirNode)node; String aIds[] = dir.list(); return aIds.length; } return 0; } @Override public Object getChild(Object parent, int index) { DasNode node = ((DasCatTreeNode)parent).node; if(!node.isDir()) return null; DasDirNode dir = (DasDirNode)node; String aIds[] = dir.list(); if(index >= aIds.length) return null; return new DasCatTreeNode(dir.get(aIds[index])); } @Override public int getIndexOfChild(Object parent, Object child) { DasNode dnTmp = ((DasCatTreeNode)parent).node; if(!dnTmp.isDir()) return -1; DasDirNode dir = (DasDirNode)dnTmp; DasNode node = ((DasCatTreeNode)child).node; String aIds[] = dir.list(); for(int i = 0; i < aIds.length; ++i){ if(dir.get(aIds[i]) == node) return i; } return -1; } }