Package net.datacrow.console.components.fstree

Source Code of net.datacrow.console.components.fstree.FileSystemTreeNodeEditor

/******************************************************************************
*                                     __                                     *
*                              <-----/@@\----->                              *
*                             <-< <  \\//  > >->                             *
*                               <-<-\ __ /->->                               *
*                               Data /  \ Crow                               *
*                                   ^    ^                                   *
*                              info@datacrow.net                             *
*                                                                            *
*                       This file is part of Data Crow.                      *
*       Data Crow 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 3 of the License, or any later version.               *
*                                                                            *
*        Data Crow 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.             *
*                                                                            *
*        You should have received a copy of the GNU General Public           *
*  License along with this program. If not, see http://www.gnu.org/licenses  *
*                                                                            *
******************************************************************************/

package net.datacrow.console.components.fstree;

import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.util.EventObject;

import javax.swing.AbstractCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JTree;
import javax.swing.tree.TreeCellEditor;

class FileSystemTreeNodeEditor extends AbstractCellEditor implements TreeCellEditor {

    private FileSystemTreeNodeRenderer renderer = new FileSystemTreeNodeRenderer();
   
    public FileSystemTreeNodeEditor() {}

    @Override
    public Object getCellEditorValue() {
        JCheckBox cb = renderer.getLeafRenderer();
        return new FileSystemTreeNode(new File(cb.getText()), null);
    }

    @Override
    public boolean isCellEditable(EventObject event) {
        return true;
    }

    @Override
    public Component getTreeCellEditorComponent(JTree tree, Object value,
            boolean selected, boolean expanded, boolean leaf, int row) {

       
        JCheckBox editor = (JCheckBox) renderer.getTreeCellRendererComponent(
                tree, value, true, expanded, leaf, row, true);

        // editor always selected / focused
        ItemListener itemListener = new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent itemEvent) {
                if (stopCellEditing())
                    fireEditingStopped();
            }
        };
       
        editor.addItemListener(itemListener);
       
        FileSystemTreeNode node = (FileSystemTreeNode) value;
        node.setSelected(!node.isSelected());
        ((FileSystemTreeModel) tree.getModel()).setSelectedRecurse(node, node.isSelected());
       
       
        tree.repaint();

        return editor;
    }

}
TOP

Related Classes of net.datacrow.console.components.fstree.FileSystemTreeNodeEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.