ColorDefinitionImpl cdi; Color clr;
    public final void paintControl(PaintEvent pev)    {        Composite co = (Composite) pev.getSource();        GC gcComposite = pev.gc;        Display d = pev.display;        Rectangle rCA = coPaletteEntries.getClientArea();        if (coEditor == null)        {            coEditor = new FillChooserComposite(co, SWT.NONE, null, true, true);            coEditor.setBounds(3, 3, rCA.width - 6, iItemHeight - 6);            ((FillChooserComposite) coEditor).addListener(this);        }        if (imgBuffer == null)        {            imgBuffer = new Image(d, rCA.width, rCA.height);            gc = new GC(imgBuffer);            idrSWT.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT, gc);        }        gc.setBackground(getBackground());        gc.fillRectangle(rCA);        iViewHeight = rCA.height;        int iStartIndex = iViewY / iItemHeight;        if (iStartIndex < 0)        {            iStartIndex = 0;        }        iVisibleCount = iViewHeight / iItemHeight + 2;        int iAvailableItems = Math.min(iVisibleCount, elPaletteEntries.size() - iStartIndex);        int iY = -(iViewY % iItemHeight);        ColorDefinitionImpl cdi;        Color clr;        gc.setForeground(d.getSystemColor(SWT.COLOR_GRAY));        final RectangleRenderEvent rre = (RectangleRenderEvent) ((EventObjectCache) idrSWT).getEventObject(this,            RectangleRenderEvent.class);        final Bounds bo = BoundsImpl.create(0, 0, 0, 0);        rre.setOutline(LineAttributesImpl.create(ColorDefinitionImpl.BLACK(), LineStyle.SOLID_LITERAL, 1));        rre.setBounds(bo);        Fill fi;        for (int i = iStartIndex; i < iStartIndex + iAvailableItems; i++)        {            fi = (Fill) elPaletteEntries.get(i);            bo.set(3, iY + 3, rCA.width - 6, iItemHeight - 6);            rre.setBackground(fi);            try            {                idrSWT.fillRectangle(rre);                idrSWT.drawRectangle(rre);            }            catch (RenderingException rex )            {                DefaultLoggerImpl.instance().log(rex);            }            if (i == iSelectedIndex)            {                // WITHIN RANGE; SHOW EDITOR AND UPDATE POSITION                if (!coEditor.isVisible())                {                    coEditor.setVisible(true);                }                coEditor.setLocation(3, iY + 3);                ((FillChooserComposite) coEditor).setFill(fi);            }            iY += iItemHeight;        }        // OUT OF RANGE; HIDE EDITOR        if (iSelectedIndex < iStartIndex || iSelectedIndex >= iStartIndex + iAvailableItems)        {            if (coEditor.isVisible())            {                coEditor.setVisible(false);            }        }        gcComposite.drawImage(imgBuffer, rCA.x, rCA.y);    }