/* * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.vcsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.AbstractVcs; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.rollback.DefaultRollbackEnvironment; import com.intellij.openapi.vcs.rollback.RollbackEnvironment; import org.jetbrains.annotations.NotNull; import java.util.Collection; import static java.util.Arrays.asList; /** * @author Kirill Likhodedov */ public class RollbackUtil { private RollbackUtil() { } /** * Finds the most appropriate name for the "Rollback" operation for the given VCSs. * That is: iterates through the all {@link RollbackEnvironment#getRollbackOperationName() RollbackEnvironments} and picks * the operation name if it is equal to all given VCSs. * Otherwise picks the {@link DefaultRollbackEnvironment#ROLLBACK_OPERATION_NAME default name}. * @param vcses affected VCSs. * @return name for the "rollback" operation to be used in the UI. */ @NotNull public static String getRollbackOperationName(@NotNull Collection<AbstractVcs> vcses) { String operationName = null; for (AbstractVcs vcs : vcses) { final RollbackEnvironment rollbackEnvironment = vcs.getRollbackEnvironment(); if (rollbackEnvironment != null) { if (operationName == null) { operationName = rollbackEnvironment.getRollbackOperationName(); } else if (!operationName.equals(rollbackEnvironment.getRollbackOperationName())) { // if there are different names, use default return DefaultRollbackEnvironment.ROLLBACK_OPERATION_NAME; } } } return operationName != null ? operationName : DefaultRollbackEnvironment.ROLLBACK_OPERATION_NAME; } /** * Finds the appropriate name for the "rollback" operation, looking through all VCSs registered in the project. * @see #getRollbackOperationName(java.util.Collection) */ @NotNull public static String getRollbackOperationName(@NotNull Project project) { return getRollbackOperationName(asList(ProjectLevelVcsManager.getInstance(project).getAllActiveVcss())); } }