From d96f8fe01e7b255a08db819ce2b4f16cc212cb85 Mon Sep 17 00:00:00 2001 From: irengrig Date: Mon, 19 Sep 2011 19:20:04 +0400 Subject: [PATCH] fix commit executor API for TC --- .../openapi/vcs/changes/CommitExecutor.java | 2 +- .../changes/CommitSessionContextAware.java | 26 +++++++++++++++++++ .../actions/CreatePatchFromChangesAction.java | 5 +++- .../patch/CreatePatchCommitExecutor.java | 16 +++++++----- .../shelf/ShelveChangesCommitExecutor.java | 8 ++++-- .../changes/ui/CommitChangeListDialog.java | 5 +++- .../checkin/GitCommitAndPushExecutor.java | 3 +-- .../commit/HgCommitAndPushExecutor.java | 3 +-- 8 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitSessionContextAware.java diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitExecutor.java b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitExecutor.java index a4fcff631dfe..3658393a6da6 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitExecutor.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitExecutor.java @@ -27,5 +27,5 @@ public interface CommitExecutor { String getActionText(); @NotNull - CommitSession createCommitSession(CommitContext commitContext); + CommitSession createCommitSession(); } diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitSessionContextAware.java b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitSessionContextAware.java new file mode 100644 index 000000000000..d240c501fb3a --- /dev/null +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/CommitSessionContextAware.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2011 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.changes; + +/** + * Created by IntelliJ IDEA. + * User: Irina.Chernushina + * Date: 9/19/11 + * Time: 7:04 PM + */ +public interface CommitSessionContextAware { + void setContext(final CommitContext context); +} diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/CreatePatchFromChangesAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/CreatePatchFromChangesAction.java index 6d1243d35290..af8aaf3961e9 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/CreatePatchFromChangesAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/CreatePatchFromChangesAction.java @@ -72,7 +72,10 @@ public class CreatePatchFromChangesAction extends AnAction implements DumbAware Collections.addAll(changeCollection, changes); project = project == null ? ProjectManager.getInstance().getDefaultProject() : project; final CreatePatchCommitExecutor executor = CreatePatchCommitExecutor.getInstance(project); - CommitSession commitSession = executor.createCommitSession(new CommitContext()); + CommitSession commitSession = executor.createCommitSession(); + if (commitSession instanceof CommitSessionContextAware) { + ((CommitSessionContextAware)commitSession).setContext(new CommitContext()); + } DialogWrapper sessionDialog = new SessionDialog(executor.getActionText(), project, commitSession, diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/CreatePatchCommitExecutor.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/CreatePatchCommitExecutor.java index 3aea036bf3f8..567639054189 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/CreatePatchCommitExecutor.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/CreatePatchCommitExecutor.java @@ -82,8 +82,8 @@ public class CreatePatchCommitExecutor implements CommitExecutorWithHelp, Projec } @NotNull - public CommitSession createCommitSession(CommitContext commitContext) { - return new CreatePatchCommitSession(commitContext); + public CommitSession createCommitSession() { + return new CreatePatchCommitSession(); } public void projectOpened() { @@ -113,12 +113,16 @@ public class CreatePatchCommitExecutor implements CommitExecutorWithHelp, Projec DefaultJDOMExternalizer.writeExternal(this, element); } - private class CreatePatchCommitSession implements CommitSession { + private class CreatePatchCommitSession implements CommitSession, CommitSessionContextAware { private final CreatePatchConfigurationPanel myPanel = new CreatePatchConfigurationPanel(myProject); - private final CommitContext myCommitContext; + private CommitContext myCommitContext; - public CreatePatchCommitSession(CommitContext commitContext) { - myCommitContext = commitContext; + public CreatePatchCommitSession() { + } + + @Override + public void setContext(CommitContext context) { + myCommitContext = context; } @Nullable diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesCommitExecutor.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesCommitExecutor.java index 04aa7878d15c..9dc8d6f4a6ed 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesCommitExecutor.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesCommitExecutor.java @@ -52,7 +52,7 @@ public class ShelveChangesCommitExecutor implements CommitExecutorWithHelp { } @NotNull - public CommitSession createCommitSession(CommitContext commitContext) { + public CommitSession createCommitSession() { return new ShelveChangesCommitSession(); } @@ -61,13 +61,17 @@ public class ShelveChangesCommitExecutor implements CommitExecutorWithHelp { return "reference.dialogs.vcs.shelve"; } - private class ShelveChangesCommitSession implements CommitSession { + private class ShelveChangesCommitSession implements CommitSession, CommitSessionContextAware { @Nullable public JComponent getAdditionalConfigurationUI() { return null; } + @Override + public void setContext(CommitContext context) { + } + @Nullable public JComponent getAdditionalConfigurationUI(final Collection changes, final String commitMessage) { return null; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java index c53bd284d8ea..3f77451998d8 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java @@ -512,7 +512,10 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj private void execute(final CommitExecutor commitExecutor) { if (!saveDialogState()) return; saveComments(true); - final CommitSession session = commitExecutor.createCommitSession(myCommitContext); + final CommitSession session = commitExecutor.createCommitSession(); + if (session instanceof CommitSessionContextAware) { + ((CommitSessionContextAware)session).setContext(myCommitContext); + } if (session == CommitSession.VCS_COMMIT) { doOKAction(); return; diff --git a/plugins/git4idea/src/git4idea/checkin/GitCommitAndPushExecutor.java b/plugins/git4idea/src/git4idea/checkin/GitCommitAndPushExecutor.java index 18c2a8239c74..512ce1fab7e8 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCommitAndPushExecutor.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCommitAndPushExecutor.java @@ -15,7 +15,6 @@ */ package git4idea.checkin; -import com.intellij.openapi.vcs.changes.CommitContext; import com.intellij.openapi.vcs.changes.CommitExecutor; import com.intellij.openapi.vcs.changes.CommitSession; import org.jetbrains.annotations.Nls; @@ -37,7 +36,7 @@ public class GitCommitAndPushExecutor implements CommitExecutor { } @NotNull - public CommitSession createCommitSession(CommitContext commitContext) { + public CommitSession createCommitSession() { myCheckinEnvironment.setNextCommitIsPushed(true); return CommitSession.VCS_COMMIT; } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCommitAndPushExecutor.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCommitAndPushExecutor.java index a86f6c36e466..e240b9d852bf 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCommitAndPushExecutor.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCommitAndPushExecutor.java @@ -15,7 +15,6 @@ */ package org.zmlx.hg4idea.provider.commit; -import com.intellij.openapi.vcs.changes.CommitContext; import com.intellij.openapi.vcs.changes.CommitExecutor; import com.intellij.openapi.vcs.changes.CommitSession; import org.jetbrains.annotations.Nls; @@ -37,7 +36,7 @@ public class HgCommitAndPushExecutor implements CommitExecutor { } @NotNull - public CommitSession createCommitSession(CommitContext commitContext) { + public CommitSession createCommitSession() { myCheckinEnvironment.setNextCommitIsPushed(true); return CommitSession.VCS_COMMIT; }