📄 chartmodelimpl.java
字号:
/* * Created on 17.06.2004 * */package net.sourceforge.ganttproject.chart;import java.awt.Color;import java.awt.Graphics;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.Set;import net.sourceforge.ganttproject.chart.GraphicPrimitiveContainer.Rectangle;import net.sourceforge.ganttproject.chart.item.ChartItem;import net.sourceforge.ganttproject.chart.item.TaskBoundaryChartItem;import net.sourceforge.ganttproject.chart.item.TaskProgressChartItem;import net.sourceforge.ganttproject.chart.item.TaskRegularAreaChartItem;import net.sourceforge.ganttproject.gui.UIConfiguration;import net.sourceforge.ganttproject.gui.options.model.ColorOption;import net.sourceforge.ganttproject.gui.options.model.DefaultColorOption;import net.sourceforge.ganttproject.gui.options.model.GP1XOptionConverter;import net.sourceforge.ganttproject.gui.options.model.GPOption;import net.sourceforge.ganttproject.gui.options.model.GPOptionGroup;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskActivity;import net.sourceforge.ganttproject.task.TaskContainmentHierarchyFacade;import net.sourceforge.ganttproject.task.TaskManager;import net.sourceforge.ganttproject.time.TimeUnitStack;/** * @author bard */public class ChartModelImpl extends ChartModelBase implements ChartModel { private java.util.List/* <Task> */myVisibleTasks; private final TaskRendererImpl myTaskRendererImpl; private TaskContainmentHierarchyFacade myTaskContainment; private final TaskGridRendererImpl myTaskGridRendererImpl; //private final ResourcesRendererImpl myResourcesRendererImpl; // private final TaskProgressRendererImpl myTaskProgressRendererImpl; private TaskManager taskManager; private boolean isOnlyDown = false; private boolean isOnlyUp = false; private boolean isPreviousState = false; private int rowHeight = 20; private final ColorOption myTaskDefaultColorOption; private final ChartOptionGroup myDefaultColorOptions; private final ColorOption myTaskAheadOfScheduleColor; private final ColorOption myTaskBehindScheduleColor; private final ColorOption myTaskOnScheduleColor;// // private final ChartOptionGroup myStateDiffOptions; private Set myHiddenTasks; public static class TuningOptions { private final boolean renderProgress; private final boolean renderDependencies; public TuningOptions(boolean renderProgress, boolean renderDependencies) { this.renderProgress = renderProgress; this.renderDependencies = renderDependencies; } public static final TuningOptions DEFAULT = new TuningOptions(true, true); } public ChartModelImpl(TaskManager taskManager, TimeUnitStack timeUnitStack, final UIConfiguration projectConfig) { super(taskManager, timeUnitStack, projectConfig); this.taskManager = taskManager; myTaskRendererImpl = new TaskRendererImpl(this); myTaskGridRendererImpl = new TaskGridRendererImpl(this); //myResourcesRendererImpl = new ResourcesRendererImpl(this); // myTaskProgressRendererImpl = new TaskProgressRendererImpl(this); myTimeUnitVisitors.add(myTaskGridRendererImpl); myTimeUnitVisitors.add(myTaskRendererImpl); class NewTaskColorOption extends DefaultColorOption implements GP1XOptionConverter { private NewTaskColorOption() { super("newTaskDefaultColor"); } public String getTagName() { return "colors"; } public String getAttributeName() { return "tasks"; } public void loadValue(String legacyValue) { lock(); loadPersistentValue(legacyValue); commit(); } public void commit() { super.commit(); projectConfig.setTaskColor(getValue()); } }; myTaskDefaultColorOption = new NewTaskColorOption(); myDefaultColorOptions = new ChartOptionGroup("ganttChartDefaultColors", new GPOption[] {myTaskDefaultColorOption, projectConfig.getWeekendAlphaRenderingOption()}, getOptionEventDispatcher()); { myTaskAheadOfScheduleColor = new DefaultColorOption( "ganttChartStateDiffColors.taskAheadOfScheduleColor") { public void commit() { super.commit(); projectConfig.setEarlierPreviousTaskColor(getValue()); } }; myTaskAheadOfScheduleColor.lock(); myTaskAheadOfScheduleColor.setValue(new Color(50, 229, 50)); myTaskAheadOfScheduleColor.commit(); // myTaskBehindScheduleColor = new DefaultColorOption( "ganttChartStateDiffColors.taskBehindScheduleColor") { public void commit() { super.commit(); projectConfig.setLaterPreviousTaskColor(getValue()); } }; myTaskBehindScheduleColor.lock(); myTaskBehindScheduleColor.setValue(new Color(229, 50, 50)); myTaskBehindScheduleColor.commit(); // myTaskOnScheduleColor = new DefaultColorOption( "ganttChartStateDiffColors.taskOnScheduleColor") { public void commit() { super.commit(); projectConfig.setPreviousTaskColor(getValue()); } }; myTaskOnScheduleColor.lock(); myTaskOnScheduleColor.setValue(Color.LIGHT_GRAY); myTaskOnScheduleColor.commit(); // myStateDiffOptions = new ChartOptionGroup( "ganttChartStateDiffColors", new GPOption[] { myTaskOnScheduleColor, myTaskAheadOfScheduleColor, myTaskBehindScheduleColor }, getOptionEventDispatcher()); } // myTimeUnitVisitors.add(myResourcesRendererImpl); // myTimeUnitVisitors.add(myTaskProgressRendererImpl); } protected void enableRenderers1() { super.enableRenderers1(); myTaskRendererImpl.setEnabled(true); } protected void enableRenderers2() { super.enableRenderers2(); myTaskRendererImpl.setEnabled(false); } protected void paintMainArea(Graphics mainArea, Painter p) { super.paintMainArea(mainArea, p); mainArea.translate(0, -getVerticalOffset()); myTaskRendererImpl.getPrimitiveContainer().paint(p, mainArea); myTaskGridRendererImpl.getPrimitiveContainer().paint(p, mainArea); myTaskRendererImpl.getPrimitiveContainer().getLayer(1).paint(p, mainArea); myTaskRendererImpl.getPrimitiveContainer().getLayer(2).paint(p, mainArea);// // myTaskRendererImpl.getPrimitiveContainer().paint(p, mainArea);// myTaskRendererImpl.getPrimitiveContainer().getLayer(1).paint(p,// mainArea);// super.paintMainArea(mainArea, p);// myTaskRendererImpl.getPrimitiveContainer().getLayer(2).paint(p,// mainArea);// myTaskGridRendererImpl.getPrimitiveContainer().paint(p, mainArea); } public void setVisibleTasks(java.util.List/* <Task> */visibleTasks) { myVisibleTasks = visibleTasks; } public void setExplicitlyHiddenTasks(Set hiddenTasks) { myHiddenTasks = hiddenTasks; } public Task findTaskWithCoordinates(int x, int y) { y = y + getVerticalOffset(); GraphicPrimitiveContainer.GraphicPrimitive primitive = myTaskRendererImpl .getPrimitiveContainer().getPrimitive(x, y - getChartUIConfiguration().getHeaderHeight()); if (primitive instanceof GraphicPrimitiveContainer.Rectangle) { TaskActivity activity = (TaskActivity) primitive.getModelObject(); return activity == null ? null : activity.getTask(); } return null; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -