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 deleteWorkspace(Workspace workspace) { Project project = workspace.getProject(); WorkspaceProviderImpl workspaceProvider = project.getLookup().lookup(WorkspaceProviderImpl.class); Workspace toSelectWorkspace = null; if (getCurrentWorkspace() == workspace) { toSelectWorkspace = workspaceProvider.getPrecedingWorkspace(workspace); } workspaceProvider.removeWorkspace(workspace); // Event fireWorkspaceEvent(EventType.CLOSE, workspace); if (getCurrentWorkspace() == workspace) { // Select the one before, or after if (toSelectWorkspace == null) { closeCurrentProject(); } else { openWorkspace(toSelectWorkspace); } } }