/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.ptc.tifworkbench.ui; import com.ptc.tifworkbench.jaxbbinding.ImSolution; import java.awt.Component; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; /** * * @author pbowden */ public class TifTreeView extends javax.swing.JPanel { /** * Creates new form TifTreeView */ public TifTreeView() { initComponents(); ImageIcon newIcon = new ImageIcon(getClass().getResource("/com/ptc/tifworkbench/ui/new.png")); ImageIcon editIcon = new ImageIcon(getClass().getResource("/com/ptc/tifworkbench/ui/edit.png")); if (newIcon != null && editIcon != null) { tifTree.setCellRenderer(new TifTreeCellRenderer(newIcon, editIcon)); } else { System.err.println("Tutorial icon missing; using default."); } } public void setModel(ImSolution sol) { this.tifTree.setModel(TifTreeModel.createTree(sol)); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { treeScroll = new javax.swing.JScrollPane(); tifTree = new javax.swing.JTree(); javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("Template"); javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("States"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Fields"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Types"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Triggers"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Queries"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Dynamic Groups"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Users"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Groups"); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Projects"); treeNode1.add(treeNode2); tifTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); treeScroll.setViewportView(tifTree); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(treeScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(treeScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTree tifTree; private javax.swing.JScrollPane treeScroll; // End of variables declaration//GEN-END:variables public class TifTreeCellRenderer extends DefaultTreeCellRenderer { private Icon newIcon; private Icon editIcon; public TifTreeCellRenderer(Icon newIcon, Icon editIcon) { super(); this.newIcon=newIcon; this.editIcon=editIcon; } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); if (isEditNode(value)) { setIcon(editIcon); setToolTipText("Element will be edited in the target system."); } else if(isNewNode(value)) { setIcon(newIcon); setToolTipText("Element will be created as new in the target system."); } return this; } protected boolean isEditNode(Object value) { if(value instanceof TifTreeNode) { TifTreeNode tifNode = (TifTreeNode)value; return tifNode.isEdit(); } return false; } protected boolean isNewNode(Object value) { if(value instanceof TifTreeNode) { TifTreeNode tifNode = (TifTreeNode)value; return !tifNode.isEdit(); } return false; } } }