public void openProject(Project project) { final ProjectImpl projectImpl = (ProjectImpl) project; final ProjectInformationImpl projectInformationImpl = projectImpl.getLookup().lookup(ProjectInformationImpl.class); final WorkspaceProviderImpl workspaceProviderImpl = project.getLookup().lookup(WorkspaceProviderImpl.class); if (projects.hasCurrentProject()) { closeCurrentProject(); } projects.addProject(projectImpl); projects.setCurrentProject(projectImpl); projectInformationImpl.open(); for (Workspace ws : project.getLookup().lookup(WorkspaceProviderImpl.class).getWorkspaces()) { fireWorkspaceEvent(EventType.INITIALIZE, ws); } if (!workspaceProviderImpl.hasCurrentWorkspace()) { if (workspaceProviderImpl.getWorkspaces().length == 0) { Workspace workspace = newWorkspace(project); openWorkspace(workspace); } else { Workspace workspace = workspaceProviderImpl.getWorkspaces()[0]; openWorkspace(workspace); } } else { fireWorkspaceEvent(EventType.SELECT, workspaceProviderImpl.getCurrentWorkspace()); } }
@Override public void removeProject(Project project) { if (projects.getCurrentProject() == project) { closeCurrentProject(); } projects.removeProject(project); }
@Override public void closeCurrentProject() { if (projects.hasCurrentProject()) { ProjectImpl currentProject = projects.getCurrentProject(); // Event if (currentProject.getLookup().lookup(WorkspaceProvider.class).hasCurrentWorkspace()) { fireWorkspaceEvent( EventType.UNSELECT, currentProject.getLookup().lookup(WorkspaceProvider.class).getCurrentWorkspace()); } for (Workspace ws : currentProject.getLookup().lookup(WorkspaceProviderImpl.class).getWorkspaces()) { fireWorkspaceEvent(EventType.CLOSE, ws); } // Close currentProject.getLookup().lookup(ProjectInformationImpl.class).close(); projects.closeCurrentProject(); fireWorkspaceEvent(EventType.DISABLE, null); // Remove projects.removeProject(currentProject); } }
@Override public void newProject() { closeCurrentProject(); ProjectImpl project = new ProjectImpl(projects.nextProjectId()); projects.addProject(project); openProject(project); }
@Override public Workspace duplicateWorkspace(Workspace workspace) { if (projects.hasCurrentProject()) { Workspace duplicate = newWorkspace(projects.getCurrentProject()); for (WorkspaceDuplicateProvider dp : Lookup.getDefault().lookupAll(WorkspaceDuplicateProvider.class)) { dp.duplicate(workspace, duplicate); } openWorkspace(duplicate); return duplicate; } return null; }
@Override public WorkspaceImpl getCurrentWorkspace() { if (projects.hasCurrentProject()) { return getCurrentProject() .getLookup() .lookup(WorkspaceProviderImpl.class) .getCurrentWorkspace(); } return null; }
@Override public ProjectImpl getCurrentProject() { return projects.getCurrentProject(); }