/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.studio.scripts.list; import java.io.File; import java.util.HashMap; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; public class SaveExpandedState { private final HashMap<String, Boolean> map = new HashMap<>(); public SaveExpandedState( ScriptsTree tree, ScriptNode scriptRoot) { read(tree, scriptRoot); } private void read(ScriptsTree tree, ScriptNode node){ TreePath path = tree.getPath(node); if(path!=null){ int row = tree.getTreeControl().getRowForPath(path); if(row==-1 || tree.getTreeControl().isExpanded(row)==false){ map.put(node.getOption().getOptionId(), false); }else{ map.put(node.getOption().getOptionId(), true); } } for(int i=0;i<node.getChildCount();i++){ read(tree,(ScriptNode) node.getChildAt(i)); } } @Override public String toString(){ return map.toString(); } public static HashMap<File, SaveExpandedState> save(ScriptsTree tree){ TreeNode root =(TreeNode) tree.getTreeControl().getModel().getRoot(); HashMap<File, SaveExpandedState>ret = new HashMap<>(); for(int i =0 ; i<root.getChildCount();i++){ ScriptNode node = (ScriptNode)root.getChildAt(i); if(node.getChildCount()>0){ SaveExpandedState state = new SaveExpandedState(tree, node); ret.put(node.getFile(), state); } } return ret; } Boolean getByOptionId(String optionId){ return map.get(optionId); } }