Web-разработка, иностранные языки, Eclipse и разные разности

Портфолио

Санскрит

Verbarium

Eclipse Memory View: AsyncTableRenderingViewer - убрать левые отступы в ячейках HexRendering

26.01.2018
Сделала наследник класса HexRendering, в котором добавила возможность подсветки определенных ячеек. При этом возник странный отступ слева в ячейках таблицы SWT Table. Однако, при просмотре данной таблицы в SPY никаких странных отступов не наблюдалось. Поиск на тему SWT Table remove left padding or indent не дал результатов



Что оказалось:

Данные отступы - вовсе не паддинги и не отступы, а прозрачные картинки icons/full/obj16/memory_obj.png. С какой целью разработчики их добавили, для меня до сих пор остается загадкой, но то, что место они съедают, образуя белые просветы - это факт Сами картинки запрашиваются в классе MemorySegmentLabelAdapter в функции getColumnImageDescriptor Наследование и модификация getAdapter в наследнике HexRendering не дала желаемого результата. У меня появилась возможность подставить большинство собственных картинок. Я создала класс, наследующий ILabelProvider и строка 176 функции getColumnImageDescriptor стала возвращать мой класс вместо null:

ILabelProvider labelProvider = tableRendering.getAdapter(ILabelProvider.class);


Но это сильно не спасло положение, покольку в случае колонки с индексом 0 все равно возвращалась стандартная картинка:

if (columnIndex == 0)
  return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_OBJECT_MEMORY);


Тогда мне пришлось сделать наследник класса AsyncTableRenderingViewer с одной единственной функцией setLabels, из которой я исключила строки:

1
2
3
4
5
6
7
if (imageDescriptors != null) {
    for (int i = 0; i < images.length; i++) {
        if (i < imageDescriptors.length) {
          images[i] = getImage(imageDescriptors[i]);
        }
    }
}


На выходе получился желаемый результат:


Облако тегов
Меню
Архив
© Psytronica.ru 2015-2018 Наверх