| /* |
| * Copyright 2000-2009 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.openapi.vcs.checkin; |
| |
| import com.intellij.openapi.Disposable; |
| import com.intellij.openapi.vcs.VcsException; |
| import com.intellij.openapi.vcs.changes.CommitExecutor; |
| import com.intellij.openapi.vcs.changes.LocalCommitExecutor; |
| import com.intellij.openapi.vcs.ui.RefreshableOnComponent; |
| import com.intellij.util.PairConsumer; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.util.List; |
| |
| /** |
| * A callback which can be used to extend the user interface of the Checkin Project/Checkin File |
| * dialogs and to perform actions before commit, on successful commit and on failed commit. |
| * |
| * @author lesya |
| * @since 5.1 |
| * @see BaseCheckinHandlerFactory#createHandler(com.intellij.openapi.vcs.CheckinProjectPanel, CommitContext) |
| * @see CodeAnalysisBeforeCheckinHandler |
| */ |
| public abstract class CheckinHandler { |
| /** |
| * you can return this handler if your handler shouldn't be created (for instance, your VCS is not active) |
| */ |
| public static final CheckinHandler DUMMY = new CheckinHandler() { |
| }; |
| |
| public enum ReturnResult { |
| COMMIT, CANCEL, CLOSE_WINDOW |
| } |
| |
| /** |
| * Returns the panel which is inserted in the "Before Check In" group box of the Checkin Project |
| * or Checkin File dialogs. |
| * |
| * @return the panel instance, or null if the handler does not provide any options to show in the |
| * "Before Check In" group. |
| */ |
| @Nullable |
| public RefreshableOnComponent getBeforeCheckinConfigurationPanel() { |
| return null; |
| } |
| |
| /** |
| * Returns the panel which is inserted in the "After Check In" group box of the Checkin Project |
| * or Checkin File dialogs. |
| * |
| * @return the panel instance, or null if the handler does not provide any options to show in the |
| * "After Check In" group. |
| * @param parentDisposable |
| */ |
| @Nullable |
| public RefreshableOnComponent getAfterCheckinConfigurationPanel(final Disposable parentDisposable) { |
| return null; |
| } |
| |
| /** |
| * Performs the before check-in processing when a custom commit executor is used. The method can use the |
| * {@link com.intellij.openapi.vcs.CheckinProjectPanel} instance passed to |
| * {@link BaseCheckinHandlerFactory#createHandler(com.intellij.openapi.vcs.CheckinProjectPanel, CommitContext)} to |
| * get information about the files to be checked in. |
| * |
| * @param executor the commit executor, or null if the standard commit operation is executed. |
| * @param additionalDataConsumer |
| * @return the code indicating whether the check-in operation should be performed or aborted. |
| */ |
| public ReturnResult beforeCheckin(@Nullable CommitExecutor executor, PairConsumer<Object, Object> additionalDataConsumer) { |
| return beforeCheckin(); |
| } |
| |
| /** |
| * Performs the before check-in processing. The method can use the |
| * {@link com.intellij.openapi.vcs.CheckinProjectPanel} instance passed to |
| * {@link BaseCheckinHandlerFactory#createHandler(com.intellij.openapi.vcs.CheckinProjectPanel, CommitContext)} to |
| * get information about the files to be checked in. |
| * |
| * @return the code indicating whether the check-in operation should be performed or aborted. |
| */ |
| public ReturnResult beforeCheckin() { |
| return ReturnResult.COMMIT; |
| } |
| |
| /** |
| * Performs the processing on successful check-in. The method can use the |
| * {@link com.intellij.openapi.vcs.CheckinProjectPanel} instance passed to |
| * {@link BaseCheckinHandlerFactory#createHandler(com.intellij.openapi.vcs.CheckinProjectPanel, CommitContext)} to |
| * get information about the checked in files. |
| */ |
| public void checkinSuccessful() { |
| |
| } |
| |
| /** |
| * Performs the processing on failed check-in. The method can use the |
| * {@link com.intellij.openapi.vcs.CheckinProjectPanel} instance passed to |
| * {@link BaseCheckinHandlerFactory#createHandler(com.intellij.openapi.vcs.CheckinProjectPanel, CommitContext)} to |
| * get information about the checked in files. |
| * |
| * @param exception the list of VCS exceptions identifying the problems that occurred during the |
| * commit operation. |
| */ |
| public void checkinFailed(List<VcsException> exception) { |
| |
| } |
| |
| /** |
| * Called to notify handler that user has included/excluded some changes to/from commit |
| */ |
| public void includedChangesChanged() { |
| } |
| |
| /** |
| * allows to skip before checkin steps when is not applicable. E.g. there should be no check for todos before shelf/create patch |
| * @param executor current operation (null for commit) |
| * @return true if handler should be skipped |
| */ |
| public boolean acceptExecutor(CommitExecutor executor) { |
| return executor == null || !(executor instanceof LocalCommitExecutor); |
| } |
| } |