public void mouseClicked(MouseEvent me){
        TreePath path = tree.getPathForLocation(me.getX(), me.getY());
        if(path==null)
            return;
        if(me.getX()>tree.getPathBounds(path).x+hotspot)
            return;

        boolean selected = selectionModel.isPathSelected(path, selectionModel.isDigged());
        if(selectionModel.isDigged() && !selected && selectionModel.isPartiallySelected(path))
            selected = !selected;
        selectionModel.removeTreeSelectionListener(this);

        try{
            if(selected)
                selectionModel.removeSelectionPath(path);
            else
                selectionModel.addSelectionPath(path);
        } finally{
            selectionModel.addTreeSelectionListener(this);
            treeChanged();
            TreePath[] selectionPaths = selectionModel.getSelectionPaths();
            if(selectionPaths==null)
            {
                label.setText("Selection:");
                System.out.println("Nothing selected.");
            }
            else{
                StringBuffer buf = new StringBuffer();
                for(int i = 0; i<selectionPaths.length; i++)
                    buf.append(selectionPaths[i].getLastPathComponent().toString()+", ");
                String text = buf.toString();
                label.setText("Selection: "+ (text.isEmpty() ? text : text.substring(0, text.length()-2)));
            }
        }
    }