package com.natpryce.piazza.projectConfiguration; import com.google.common.base.Optional; import jetbrains.buildServer.serverSide.ProjectManager; import jetbrains.buildServer.serverSide.SProject; import jetbrains.buildServer.web.openapi.PagePlaces; import jetbrains.buildServer.web.openapi.PlaceId; import jetbrains.buildServer.web.openapi.SimpleCustomTab; import org.jetbrains.annotations.NotNull; import javax.servlet.http.HttpServletRequest; import java.util.Map; public abstract class EditProjectTab extends SimpleCustomTab { private final ProjectManager myProjectManager; protected EditProjectTab(final PagePlaces pagePlaces, final String pluginName, final String includeUrl, final String title, final ProjectManager projectManager) { super(pagePlaces, PlaceId.EDIT_PROJECT_PAGE_TAB, pluginName, includeUrl, title); myProjectManager = projectManager; register(); } public Optional<SProject> getProject(@NotNull HttpServletRequest request) { String projectId = request.getParameter("projectId"); if (projectId != null) { return Optional.fromNullable(myProjectManager.findProjectByExternalId(projectId)); } return Optional.absent(); } public void fillModel(@NotNull final Map<String, Object> model, @NotNull final HttpServletRequest request) { super.fillModel(model, request); model.put("currentProject", getProject(request)); } public boolean isAvailable(@NotNull final HttpServletRequest request) { return getProject(request).isPresent(); } }