public synchronized void updateDownload( Download download ) {
        LeafNode node = getNode( download );

        if ( download.isActive() && node == null ) {
            treeModelDL.insertNodeInto( new LeafNode( download ),
                    ( (DefaultMutableTreeNode) treeModelDL.getRoot() ),
                    ( (DefaultMutableTreeNode) treeModelDL.getRoot() ).getChildCount() );
            if ( treeModelDL.getChildCount( ( (DefaultMutableTreeNode) treeModelDL.getRoot() ) ) >= 1
                    && !isExpanded( 0 ) ) {
                setRootVisible( true );
                expandRow( 0 );
                setRootVisible( false );
            }
        }

        if ( node != null ) {
            if ( node.getDownload() != download )
                node.setDownload( download );
            node.setDownPerc( (float) download.getDownloadedAmount() / (float) download.getTotalLength() );
        }
    }