/** {@inheritDoc} */ @Override public Component getTreeCellRendererComponent( final JTree aTree, final Object aValue, final boolean aSelected, final boolean aExpanded, final boolean aLeaf, final int aRow, final boolean aHasFocus) { Object value = aValue; if (value instanceof DefaultMutableTreeNode) { value = ((DefaultMutableTreeNode) value).getUserObject(); } if (value instanceof ElementGroup) { ElementGroup elementGroup = (ElementGroup) value; value = elementGroup.getName(); } else if (value instanceof SignalElement) { SignalElement signalElement = (SignalElement) value; value = signalElement.getLabel(); } JLabel delegate = (JLabel) super.getTreeCellRendererComponent( aTree, value, aSelected, aExpanded, aLeaf, aRow, aHasFocus); return delegate; }
/** @return a tree structure based on the initial element model. */ private DefaultMutableTreeNode createTree() { ElementTreeNode rootNode = new ElementTreeNode(); for (ElementGroup group : this.model.getGroups()) { ElementTreeNode groupNode = new ElementTreeNode(group); rootNode.add(groupNode); for (SignalElement element : group.getElements()) { groupNode.add(new ElementTreeNode(element)); } } return rootNode; }
/** Adds a new group to our tree and element model. */ final void addNewGroup() { DefaultTreeModel model = (DefaultTreeModel) this.tree.getModel(); boolean groupSummaryVisibleByDefault = UIManager.getBoolean(GROUP_SUMMARY_VISIBLE_DEFAULT); boolean scopeVisibleByDefault = UIManager.getBoolean(ANALOG_SCOPE_VISIBLE_DEFAULT); int groupCount = this.model.getGroups().size(); String name = String.format("Group %d", Integer.valueOf(groupCount + 1)); // Create model structure... ElementGroup newGroup = this.model.addGroup(name); newGroup.setVisible(true); SignalElement groupSummaryElement = SignalElement.createGroupSummaryElement(newGroup); groupSummaryElement.setEnabled(groupSummaryVisibleByDefault); newGroup.addElement(groupSummaryElement); SignalElement analogScopeElement = SignalElement.createAnalogScopeElement(newGroup); analogScopeElement.setEnabled(scopeVisibleByDefault); newGroup.addElement(analogScopeElement); // Create tree structure... ElementTreeNode rootNode = (ElementTreeNode) model.getRoot(); ElementTreeNode groupNode = new ElementTreeNode(newGroup); rootNode.add(groupNode); groupNode.add(new ElementTreeNode(groupSummaryElement)); groupNode.add(new ElementTreeNode(analogScopeElement)); int index = rootNode.getIndex(groupNode); model.nodesWereInserted(rootNode, new int[] {index}); model.nodeStructureChanged(groupNode); this.tree.expandRow(index); }