package org.codemap; import java.util.HashMap; import java.util.Map; import org.codemap.mapview.MapController; import org.eclipse.jdt.core.IJavaProject; public class MapPerProjectCache { private Map<IJavaProject,MapPerProject> cache = new HashMap<IJavaProject,MapPerProject>(); private MapController theController; public MapPerProjectCache(MapController mapController) { theController = mapController; } public MapPerProject forProject(IJavaProject project) { if (project == null) return null; MapPerProject map = cache.get(project); if (map != null) return map; map = new MapPerProject(project, this); cache.put(project, map); map.initialize(); // breaks circular setup dependencies return map; } public void saveMapState() { for (MapPerProject each: cache.values()) { each.saveState(); } } /*default*/ void reload(MapPerProject mapPerProject) { IJavaProject project = mapPerProject.getJavaProject(); cache.remove(project); theController.onNewProjectSelected(); } }