Компонент диаграммы Ганта SWT Nebula

Я пытаюсь использовать компонент Nebulla Gantchart для проекта. Нам нужно стандартное управление проектами, такое как представление, с таблицей рядом с диаграммой Ганта. К сожалению, совсем непросто выровнять строки компонента сетки и диаграммы Ганта. Есть пример, который пытается сделать это с компонентом дерева. Но это не точно. высота строки немного отличается между диаграммой и деревом, кроме того, прокрутка полностью все портит.

У кого-нибудь есть решение для этого, пожалуйста?


person Arash    schedule 19.03.2015    source источник


Ответы (1)


Это может быть немного запоздало, но вот несколько советов, основанных на моем опыте работы с диаграммой Ганта 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