Это может быть немного запоздало, но вот несколько советов, основанных на моем опыте работы с диаграммой Ганта Nebula.
Относительно проблемы высоты строки между деревом и диаграммой. Диаграммы Ганта можно создавать с пользовательскими настройками, передав собственный класс в конструктор GanttChart. Nebula рекомендует расширять nebula.widgets.ganttchart.AbstractSettings при создании этого класса. Несколько методов, на которые вы, возможно, захотите взглянуть и/или переопределить:
AbstractSettings.getEventsTopSpacer()
AbstractSettings.getEventsBottomSpacer()
AbstractSettings.getSectionBarDividerHeight()
AbstractSettings.getSectionBarWidth()
Вы также можете взглянуть на AbstractSettings.lockHeaderOnVerticalScroll() - мне нужно было заблокировать панель заголовка, а затем добавить отступ над моей таблицей, чтобы получить правильное выравнивание.
Что касается связывания дерева/диаграммы во время прокрутки. Можно добавить прослушиватель SWT.Selection на вертикальную полосу вашего дерева. Затем, когда дерево прокручивается, вы можете заставить прокручиваться и Ганта. Для меня это выглядело примерно так:
treeViewer.getTree().getVerticalBar().addListener(SWT.Selection, new Listener(){
@Override
public void handleEvent(Event event){
TreeItem ti = treeViewer.getTree.getTopItem();
ganttChart.getGanttComposite().setTopItem((GanttEvent) ti.getData(), 6, SWT.LEFT);
}
});
Обратите внимание, что это не очень хорошо работает наоборот; если вы попытаетесь связать действие прокрутки диаграммы Ганта с деревом, ответ будет не таким быстрым. Это связано с тем, что диаграммы Ганта прокручиваются плавно, а не поэлементно, как дерево. Я обошел эту проблему, отключив полосу прокрутки на диаграмме Ганта, но это нежелательное решение.
В дополнение к этому мне пришлось добавить прослушиватель SWT.Resize для выравнивания дерева/диаграммы всякий раз, когда изменялся размер средства просмотра.
Надеюсь, это указывает вам в правильном направлении! Удачи.
person
Equinox
schedule
24.02.2016