protected void paint(Graphics gfx) {
        //Logger.debug(this, "paint: entered for '" + label + '\'');
        
        final int fontHeight = gfx.getFont().getHeight();
        
        if (label != null) {
            drawLabel(gfx, fontHeight);
        }
        
        if (imgUrl != null) {

            if (imageBmp != null) {
                drawBitmap(gfx);
                
            } else {
                
                if (errorLoadingImage) {
                    drawError(gfx, fontHeight);
                    
                } else {
                    if (!isLoadingImage) {
                        desiredImgHeight = h - labelToImageGap - labelHeight - totalPaddingY;
                        desiredImgWidth  = w - totalPaddingX;
                        isLoadingImage = true;
                        
                        BitmapLoader.requestLoading(bitmapLoading);
                    }
                    
                    if (isLoadingImage) {
                        drawLoading(gfx, fontHeight);
                    }
                }
            }
        }
        
        if (drawBtnStyle) {
            drawBtnStyle(gfx);
        }
        //Logger.debug(this, "paint: passed");
    }