/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package jifi.project; import java.awt.Component; import javax.swing.Icon; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.UIManager; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeSelectionModel; import jifi.ui.view.SecondaryView; /** * * @author antunes2 */ public class ProjectTreeView implements SecondaryView { private final JTree tree; private final JScrollPane treeView; private Project project; private ViewData data; public ProjectTreeView(Project project) { //create a tree that allows one selection at a time tree = new JTree(); tree.setCellRenderer(new FeeRenderer()); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); //create the scroll pane and add the tree to it treeView = new JScrollPane(tree); //update content setProject(project); data = new ViewData("Projeto", null, "Informações sobre o projeto atual", treeView); } public final void setProject(Project project) { this.project = project; update(); } @Override public final void update() { DefaultMutableTreeNode top = new DefaultMutableTreeNode(project); tree.setModel(new DefaultTreeModel(top)); for (Element.CategoryData category : project.getElementsCategories()) { DefaultMutableTreeNode elementCategory = new DefaultMutableTreeNode(category); top.add(elementCategory); for (Element se : project.getElements(category.getName())) { DefaultMutableTreeNode element = new DefaultMutableTreeNode(se); elementCategory.add(element); } } for (int i = 0; i < tree.getRowCount(); i++) { tree.expandRow(i); } } @Override public void selected() { } @Override public ViewData getData() { return data; } class FeeRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean bSelected, boolean bExpanded, boolean bLeaf, int nRow, boolean bFocus) { super.getTreeCellRendererComponent(tree, value, bSelected, bExpanded, bLeaf, nRow, bFocus); DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; Object obj = node.getUserObject(); Icon icon = null; if (obj instanceof Element) { icon = ((Element) obj).getIcon(); } else if (obj instanceof Project) { setIcon(UIManager.getIcon("FileView.floppyDriveIcon")); return this; } else if (obj instanceof Element.CategoryData) { icon = ((Element.CategoryData) obj).getIcon(); if (icon != null) { setIcon(icon); return this; } } if (bLeaf) { if (icon != null) { setIcon(icon); } else { setIcon(UIManager.getIcon("Tree.leafIcon")); } } else { if (bExpanded) { setIcon(UIManager.getIcon("Tree.openIcon")); } else { setIcon(UIManager.getIcon("Tree.closedIcon")); } } return this; } } }