@Override
        public void handleEvent(Event e) {
            if (isDisposed()) {
                return;
            }
            switch (e.type) {
                case SWT.PaintItem:
                    if (e.index < columnController.getColumnsCount()) {
                        final ObjectColumn objectColumn = getColumnByIndex(e.index);
                        if (objectColumn == null) {
                            return;
                        }
                        final OBJECT_TYPE object = (OBJECT_TYPE) e.item.getData();
                        final boolean isFocusCell = focusObject == object && focusColumn == objectColumn;

                        if (object instanceof ObjectsGroupingWrapper) {
                            break;
                        }
                        final Object objectValue = getObjectValue(object);
                        Object cellValue = getCellValue(object, objectColumn, true);

                        if (cellValue instanceof LazyValue) {
                            if (!lazyLoadCanceled) {
                                addLazyObject(object, objectColumn);
                            }
                        } else {
                            final ObjectPropertyDescriptor prop = getPropertyByObject(objectColumn, objectValue);
                            if (itemsViewer.isCellEditorActive() && isFocusCell) {
                                // Do not paint over active editor
                                return;
                            }
                            if (cellValue != null && prop != null) {
                                renderer.paintCell(e, object, cellValue, e.item, prop.getDataType(), e.index, prop.isEditable(objectValue), (e.detail & SWT.SELECTED) == SWT.SELECTED);
                            } else if (prop == null) {
                                renderer.paintInvalidCell(e, e.item, e.index);
                            }
                        }
                        break;
                    }
            }
        }
Creates service for object loading.
@param forUpdate true if it is update/merge operation. I.e. existing object modifications should remain.
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/itemlist/ObjectListControl.java