/* * File : CheckBoxTree.java * Created : 15-jul-2004 14:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Point; import javax.swing.JCheckBox; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreePath; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.08.29 */ public class CheckBoxTree extends javax.swing.JTree { /** Creates new form BeanForm */ public CheckBoxTree() { initComponents(); } /** 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. */ private void initComponents() {//GEN-BEGIN:initComponents setCellRenderer(new CellRenderer()); addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { treeMouseClicked(evt); } }); }//GEN-END:initComponents private void treeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeMouseClicked Point pt=evt.getPoint(); TreePath tp=getPathForLocation(pt.x, pt.y); if(tp!=null && tp.getLastPathComponent() instanceof CheckBoxTreeObject){ ((CheckBoxTreeObject)tp.getLastPathComponent()).switchSelected(); repaint(getPathBounds(tp)); } }//GEN-LAST:event_treeMouseClicked class CellRenderer extends DefaultTreeCellRenderer{ JCheckBox checkBox=new JCheckBox(){ @Override public void paint(Graphics g){ if(hasFocus){ Color bsColor=getBorderSelectionColor(); if(bsColor!=null){ g.setColor(bsColor); g.drawRect(0, 0, getWidth()-1, getHeight()-1); } } super.paint(g); } }; public CellRenderer(){ super(); checkBox.setBackground(getBackground()); checkBox.setOpaque(isOpaque()); checkBox.setFont(getFont()); checkBox.setForeground(getForeground()); } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){ Component result=super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if(value instanceof CheckBoxTreeObject){ CheckBoxTreeObject cho=(CheckBoxTreeObject)value; checkBox.setText(cho.getLabel()); checkBox.setSelected(cho.isSelected()); checkBox.setEnabled(tree.isEnabled()); checkBox.setComponentOrientation(tree.getComponentOrientation()); result=checkBox; } return result; } } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }