package ttt.editor.components.treeview; import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import ttt.organization.TTT_Project; import ttt.organization.TTT_Scene; import ttt.organization.managers.TTT_EntityManager; import ttt.organization.managers.TTT_SceneManager; public class TTT_EditorProjectTreeModel implements TreeModel { // Project // -scene // --scene1 // --scene2 // -entities // --ent1 // --ent2 final private TTT_Project project; public TTT_EditorProjectTreeModel(final TTT_Project project) { this.project = project; } @Override public void addTreeModelListener(TreeModelListener l) { } @Override public Object getChild(Object o, int index) { if (o instanceof TTT_Project) { TTT_Project p = (TTT_Project) o; return index == 0 ? p.sceneManager : p.entities; } else if (o instanceof TTT_SceneManager) { return ((TTT_SceneManager) o).getSceneList().get(index); } else if (o instanceof TTT_EntityManager) { return ((TTT_EntityManager) o).getAllEntitiesFast().get(0); } else if (o instanceof TTT_Scene) { return ((TTT_Scene) o).entities.getAllEntitiesFast().get(0); } return 0; } @Override public int getChildCount(Object o) { if (o instanceof TTT_Project) { return 2; } else if (o instanceof TTT_SceneManager) { return ((TTT_SceneManager) o).getSceneList().size(); } else if (o instanceof TTT_EntityManager) { return ((TTT_EntityManager) o).getAllEntitiesFast().size(); } else if (o instanceof TTT_Scene) { return ((TTT_Scene) o).entities.getAllEntitiesFast().size(); } return 0; } @Override public int getIndexOfChild(Object parent, Object child) { if (parent instanceof TTT_Project) { return child instanceof TTT_SceneManager ? 0 : 1; } else if (parent instanceof TTT_SceneManager) { return ((TTT_SceneManager) parent).getSceneList().indexOf(child); } else if (parent instanceof TTT_EntityManager) { return ((TTT_EntityManager) parent).getAllEntitiesFast().indexOf(child); } else if (parent instanceof TTT_Scene) { return ((TTT_Scene) parent).entities.getAllEntitiesFast().indexOf(child); } return -1; } @Override public Object getRoot() { return project; } @Override public boolean isLeaf(Object node) { return !(node instanceof TTT_Project) && !(node instanceof TTT_SceneManager) && !(node instanceof TTT_Scene) && !(node instanceof TTT_EntityManager); } @Override public void removeTreeModelListener(TreeModelListener l) { // TODO Auto-generated method stub } @Override public void valueForPathChanged(TreePath path, Object newValue) { // TODO Auto-generated method stub } }