/* GanttProject is an opensource project management tool. Copyright (C) 2005-2011 Dmitry Barashev, GanttProject team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package net.sourceforge.ganttproject; import java.awt.Color; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; import biz.ganttproject.core.calendar.GPCalendar; import biz.ganttproject.core.calendar.GPCalendarCalc; import biz.ganttproject.core.calendar.GPCalendarListener; import biz.ganttproject.core.calendar.WeekendCalendarImpl; import biz.ganttproject.core.time.TimeUnitStack; import biz.ganttproject.core.time.impl.GPTimeUnitStack; import net.sourceforge.ganttproject.document.Document; import net.sourceforge.ganttproject.document.DocumentManager; import net.sourceforge.ganttproject.font.Fonts; import net.sourceforge.ganttproject.gui.NotificationManager; import net.sourceforge.ganttproject.gui.UIConfiguration; import net.sourceforge.ganttproject.language.GanttLanguage; import net.sourceforge.ganttproject.resource.HumanResourceManager; import net.sourceforge.ganttproject.roles.RoleManager; import net.sourceforge.ganttproject.task.CustomColumnsManager; import net.sourceforge.ganttproject.task.Task; import net.sourceforge.ganttproject.task.TaskContainmentHierarchyFacade; import net.sourceforge.ganttproject.task.TaskManager; import net.sourceforge.ganttproject.task.TaskManagerConfig; public class GanttProjectImpl implements IGanttProject { private static final GanttLanguage language = GanttLanguage.getInstance(); private String myProjectName; private String myDescription; private String myOrganization; private String myWebLink; private final TaskManager myTaskManager; private final HumanResourceManager myResourceManager; private final TaskManagerConfigImpl myTaskManagerConfig; private Document myDocument; private final List<ProjectEventListener> myListeners = new ArrayList<ProjectEventListener>(); private UIConfiguration myUIConfiguration; private final CustomColumnsManager myTaskCustomColumnManager; private final List<GanttPreviousState> myBaselines = new ArrayList<GanttPreviousState>(); private final WeekendCalendarImpl myCalendar = new WeekendCalendarImpl(); public GanttProjectImpl() { myResourceManager = new HumanResourceManager(RoleManager.Access.getInstance().getDefaultRole(), new CustomColumnsManager()); myTaskManagerConfig = new TaskManagerConfigImpl(myResourceManager, myCalendar, GanttLanguage.getInstance()); myTaskManager = TaskManager.Access.newInstance(null, myTaskManagerConfig); myUIConfiguration = new UIConfiguration(Color.BLUE, true); myTaskCustomColumnManager = new CustomColumnsManager(); myCalendar.addListener(new GPCalendarListener() { @Override public void onCalendarChange() { setModified(); } }); } @Override public String getProjectName() { return myProjectName; } @Override public void setProjectName(String projectName) { myProjectName = projectName; } @Override public String getDescription() { return myDescription; } @Override public void setDescription(String description) { myDescription = description; } @Override public String getOrganization() { return myOrganization; } @Override public void setOrganization(String organization) { myOrganization = organization; } @Override public String getWebLink() { return myWebLink; } @Override public void setWebLink(String webLink) { myWebLink = webLink; } public Task newTask() { Task result = getTaskManager().createTask(); getTaskManager().getTaskHierarchy().move(result, getTaskManager().getRootTask()); return result; } public GanttLanguage getLanguage() { return language; } @Override public UIConfiguration getUIConfiguration() { return myUIConfiguration; } @Override public HumanResourceManager getHumanResourceManager() { return myResourceManager; } @Override public RoleManager getRoleManager() { return RoleManager.Access.getInstance(); } @Override public TaskManager getTaskManager() { return myTaskManager; } @Override public TaskContainmentHierarchyFacade getTaskContainment() { return getTaskManager().getTaskHierarchy(); } @Override public GPCalendarCalc getActiveCalendar() { return myTaskManagerConfig.getCalendar(); } @Override public TimeUnitStack getTimeUnitStack() { return myTaskManagerConfig.getTimeUnitStack(); } @Override public void setModified() { // TODO Auto-generated method stub } @Override public void setModified(boolean modified) { // TODO Auto-generated method stub } @Override public void close() { // TODO Auto-generated method stub } @Override public Document getDocument() { return myDocument; } @Override public void setDocument(Document document) { myDocument = document; } @Override public void addProjectEventListener(ProjectEventListener listener) { myListeners.add(listener); } @Override public void removeProjectEventListener(ProjectEventListener listener) { myListeners.remove(listener); } @Override public boolean isModified() { // TODO Auto-generated method stub return false; } @Override public void open(Document document) throws IOException { // TODO Auto-generated method stub } @Override public DocumentManager getDocumentManager() { // TODO Auto-generated method stub return null; } @Override public CustomPropertyManager getResourceCustomPropertyManager() { return myResourceManager.getCustomPropertyManager(); }; private static class TaskManagerConfigImpl implements TaskManagerConfig { private final HumanResourceManager myResourceManager; private final GPTimeUnitStack myTimeUnitStack; private final GPCalendarCalc myCalendar; private TaskManagerConfigImpl(HumanResourceManager resourceManager, GPCalendarCalc calendar, GanttLanguage i18n) { myResourceManager = resourceManager; myTimeUnitStack = new GPTimeUnitStack(); myCalendar = calendar; } @Override public Color getDefaultColor() { return Color.BLUE; } @Override public GPCalendarCalc getCalendar() { return myCalendar; } @Override public TimeUnitStack getTimeUnitStack() { return myTimeUnitStack; } @Override public HumanResourceManager getResourceManager() { return myResourceManager; } @Override public URL getProjectDocumentURL() { return null; } @Override public NotificationManager getNotificationManager() { return null; } } @Override public CustomPropertyManager getTaskCustomColumnManager() { return myTaskCustomColumnManager; } @Override public List<GanttPreviousState> getBaselines() { return myBaselines; } public void repaintResourcePanel() { // TODO Auto-generated method stub } }