001: /**
002: * CurrentProject.java
003: * Created on 13.02.2003, 13:16:52 Alex
004: * Package: net.sf.memoranda
005: *
006: * @author Alex V. Alishevskikh, alex@openmechanics.net
007: * Copyright (c) 2003 Memoranda Team. http://memoranda.sf.net
008: *
009: */package net.sf.memoranda;
010:
011: import java.awt.event.ActionEvent;
012: import java.awt.event.ActionListener;
013: import java.util.Collection;
014: import java.util.Vector;
015:
016: import net.sf.memoranda.ui.AppFrame;
017: import net.sf.memoranda.util.Context;
018: import net.sf.memoranda.util.CurrentStorage;
019: import net.sf.memoranda.util.Storage;
020:
021: /**
022: *
023: */
024: /*$Id: CurrentProject.java,v 1.6 2005/12/01 08:12:26 alexeya Exp $*/
025: public class CurrentProject {
026:
027: private static Project _project = null;
028: private static TaskList _tasklist = null;
029: private static NoteList _notelist = null;
030: private static ResourcesList _resources = null;
031: private static Vector projectListeners = new Vector();
032:
033: static {
034: String prjId = (String) Context.get("LAST_OPENED_PROJECT_ID");
035: if (prjId == null) {
036: prjId = "__default";
037: Context.put("LAST_OPENED_PROJECT_ID", prjId);
038: }
039: //ProjectManager.init();
040: _project = ProjectManager.getProject(prjId);
041:
042: if (_project == null) {
043: // alexeya: Fixed bug with NullPointer when LAST_OPENED_PROJECT_ID
044: // references to missing project
045: _project = ProjectManager.getProject("__default");
046: if (_project == null)
047: _project = (Project) ProjectManager.getActiveProjects()
048: .get(0);
049: Context.put("LAST_OPENED_PROJECT_ID", _project.getID());
050:
051: }
052:
053: _tasklist = CurrentStorage.get().openTaskList(_project);
054: _notelist = CurrentStorage.get().openNoteList(_project);
055: _resources = CurrentStorage.get().openResourcesList(_project);
056: AppFrame.addExitListener(new ActionListener() {
057: public void actionPerformed(ActionEvent e) {
058: save();
059: }
060: });
061: }
062:
063: public static Project get() {
064: return _project;
065: }
066:
067: public static TaskList getTaskList() {
068: return _tasklist;
069: }
070:
071: public static NoteList getNoteList() {
072: return _notelist;
073: }
074:
075: public static ResourcesList getResourcesList() {
076: return _resources;
077: }
078:
079: public static void set(Project project) {
080: if (project.getID().equals(_project.getID()))
081: return;
082: TaskList newtasklist = CurrentStorage.get().openTaskList(
083: project);
084: NoteList newnotelist = CurrentStorage.get().openNoteList(
085: project);
086: ResourcesList newresources = CurrentStorage.get()
087: .openResourcesList(project);
088: notifyListenersBefore(project, newnotelist, newtasklist,
089: newresources);
090: _project = project;
091: _tasklist = newtasklist;
092: _notelist = newnotelist;
093: _resources = newresources;
094: notifyListenersAfter();
095: Context.put("LAST_OPENED_PROJECT_ID", project.getID());
096: }
097:
098: public static void addProjectListener(ProjectListener pl) {
099: projectListeners.add(pl);
100: }
101:
102: public static Collection getChangeListeners() {
103: return projectListeners;
104: }
105:
106: private static void notifyListenersBefore(Project project,
107: NoteList nl, TaskList tl, ResourcesList rl) {
108: for (int i = 0; i < projectListeners.size(); i++) {
109: ((ProjectListener) projectListeners.get(i)).projectChange(
110: project, nl, tl, rl);
111: /*DEBUGSystem.out.println(projectListeners.get(i));*/
112: }
113: }
114:
115: private static void notifyListenersAfter() {
116: for (int i = 0; i < projectListeners.size(); i++) {
117: ((ProjectListener) projectListeners.get(i))
118: .projectWasChanged();
119: }
120: }
121:
122: public static void save() {
123: Storage storage = CurrentStorage.get();
124:
125: storage.storeNoteList(_notelist, _project);
126: storage.storeTaskList(_tasklist, _project);
127: storage.storeResourcesList(_resources, _project);
128: storage.storeProjectManager();
129: }
130:
131: public static void free() {
132: _project = null;
133: _tasklist = null;
134: _notelist = null;
135: _resources = null;
136: }
137: }
|