package ru.khasang.cachoeira.view.mainwindow.diagram.ganttplan.objectslayer; import ru.khasang.cachoeira.model.IResource; import ru.khasang.cachoeira.model.ITask; import ru.khasang.cachoeira.viewcontroller.MainWindowController; import ru.khasang.cachoeira.viewcontroller.tooltipfactory.TaskTooltipFactory; import ru.khasang.cachoeira.viewcontroller.tooltipfactory.TooltipFactory; import ru.khasang.cachoeira.view.mainwindow.diagram.ganttplan.objectslayer.taskbar.TaskBar; import ru.khasang.cachoeira.view.mainwindow.diagram.ganttplan.objectslayer.taskbar.TaskGanttPlanTaskBar; import ru.khasang.cachoeira.view.mainwindow.diagram.ganttplan.labelslayer.label.TaskBarLabel; public class TaskGanttPlanObjectsLayer extends ObjectsLayer { TooltipFactory<ITask> tooltipFactory = new TaskTooltipFactory(); public TaskGanttPlanObjectsLayer(MainWindowController controller) { this.controller = controller; } @Override public void removeTaskBar(ITask task) { super.removeTaskBar(task); controller.getTaskGanttPlan().getLabelsLayer().removeLabel(task); } @Override public TaskBar createTaskBar(ITask task, IResource resource) { TaskBar taskBar = new TaskGanttPlanTaskBar(controller); taskBar.initTaskRectangle(task, null); taskBar.setTask(task); taskBar.setContextMenu(task); taskBar.setTooltip(tooltipFactory.createTooltip(task)); // Создаем "панель" на которой будут отображаться привязанные ресурсы controller.getTaskGanttPlan().getLabelsLayer().setLabelToTaskBar(taskBar); // Создаем "панель" которая меняет, цвет если эта задача выделена TaskBarLabel paneLabel = controller.getTaskGanttPlan().getLabelsLayer().findLabelByTask(task); controller.getTaskGanttPlan().getSelectedObjectLayer().addBackgroundToTaskBar(taskBar, paneLabel, controller); return taskBar; } @Override public void refreshPlan() { this.getChildren().clear(); controller.getProject().getTaskList().forEach(task -> { TaskBar taskPaneTaskBar = createTaskBar(task, null); this.getChildren().add(taskPaneTaskBar); }); } }