mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-173186 Commit message lost after cancelling commit dialog with Add commit message from Task server enabled
This commit is contained in:
@@ -144,7 +144,6 @@
|
||||
<annotator language="JQL" implementationClass="com.intellij.tasks.jira.jql.codeinsight.JqlAnnotator"/>
|
||||
|
||||
<checkinHandlerFactory implementation="com.intellij.tasks.impl.TaskCheckinHandlerFactory"/>
|
||||
<vcs.commitMessageProvider implementation="com.intellij.tasks.impl.TaskCommitMessageProvider"/>
|
||||
<!-- YouTrack support -->
|
||||
<!--<annotator language="TEXT" implementationClass="com.intellij.tasks.youtrack.lang.YouTrackHighlightingAnnotator"/>-->
|
||||
<lang.parserDefinition language="YouTrack" implementationClass="com.intellij.tasks.youtrack.lang.YouTrackParserDefinition"/>
|
||||
|
||||
@@ -21,11 +21,13 @@ import com.intellij.openapi.ui.ComboBox;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.vcs.VcsTaskHandler;
|
||||
import com.intellij.openapi.vcs.changes.ChangeListManager;
|
||||
import com.intellij.tasks.LocalTask;
|
||||
import com.intellij.tasks.Task;
|
||||
import com.intellij.tasks.TaskManager;
|
||||
import com.intellij.tasks.config.TaskSettings;
|
||||
import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.tasks.impl.TaskUtil;
|
||||
import com.intellij.tasks.ui.TaskDialogPanel;
|
||||
import com.intellij.ui.ColoredListCellRenderer;
|
||||
import com.intellij.ui.components.JBCheckBox;
|
||||
@@ -59,11 +61,13 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
private VcsTaskHandler myVcsTaskHandler;
|
||||
private static final String START_FROM_BRANCH = "start.from.branch";
|
||||
private final TaskManagerImpl myTaskManager;
|
||||
private final Project myProject;
|
||||
private final LocalTask myPreviousTask;
|
||||
|
||||
public VcsOpenTaskPanel(Project project, Task task) {
|
||||
|
||||
myTaskManager = (TaskManagerImpl)TaskManager.getManager(project);
|
||||
myProject = project;
|
||||
myPreviousTask = myTaskManager.getActiveTask();
|
||||
ActionListener listener = new ActionListener() {
|
||||
@Override
|
||||
@@ -199,6 +203,11 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
if (myCreateChangelist.isSelected()) {
|
||||
myTaskManager.createChangeList(localTask, myChangelistName.getText());
|
||||
}
|
||||
else {
|
||||
ChangeListManager changeListManager = ChangeListManager.getInstance(myProject);
|
||||
String comment = TaskUtil.getChangeListComment(localTask);
|
||||
changeListManager.editComment(changeListManager.getDefaultListName(), comment);
|
||||
}
|
||||
if (myCreateBranch.isSelected()) {
|
||||
VcsTaskHandler.TaskInfo branchFrom = (VcsTaskHandler.TaskInfo)myBranchFrom.getSelectedItem();
|
||||
Runnable createBranch = () -> myTaskManager.createBranch(localTask, myPreviousTask, myBranchName.getText(), branchFrom);
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000-2017 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.tasks.impl;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vcs.changes.LocalChangeList;
|
||||
import com.intellij.openapi.vcs.changes.ui.CommitMessageProvider;
|
||||
import com.intellij.tasks.LocalTask;
|
||||
import com.intellij.tasks.TaskManager;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
*/
|
||||
public class TaskCommitMessageProvider implements CommitMessageProvider {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getCommitMessage(LocalChangeList forChangelist, Project project) {
|
||||
LocalTask task = TaskManager.getManager(project).getAssociatedTask(forChangelist);
|
||||
if (task == null) return null;
|
||||
return TaskUtil.getChangeListComment(task, true);
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,10 @@ import com.intellij.openapi.vcs.impl.projectlevelman.AllVcses;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.tasks.*;
|
||||
import com.intellij.tasks.actions.OpenTaskDialog;
|
||||
import com.intellij.tasks.impl.*;
|
||||
import com.intellij.tasks.impl.LocalTaskImpl;
|
||||
import com.intellij.tasks.impl.TaskChangelistSupport;
|
||||
import com.intellij.tasks.impl.TaskCheckinHandlerFactory;
|
||||
import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -449,36 +452,44 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
|
||||
|
||||
myTaskManager.getState().shelveChanges = true;
|
||||
LocalTaskImpl task = new LocalTaskImpl("id", "summary");
|
||||
OpenTaskDialog dialog = new OpenTaskDialog(getProject(), task);
|
||||
try {
|
||||
dialog.createTask();
|
||||
assertEquals(dumpChangeListManager(), activeTask.getSummary(), activeTask.getShelfName());
|
||||
runOpenTaskDialog(task);
|
||||
|
||||
List<ShelvedChangeList> lists = ShelveChangesManager.getInstance(getProject()).getShelvedChangeLists();
|
||||
assertTrue(lists.stream().anyMatch(list -> list.DESCRIPTION.equals(activeTask.getShelfName())));
|
||||
assertEquals(dumpChangeListManager(), activeTask.getSummary(), activeTask.getShelfName());
|
||||
|
||||
assertEmpty(myChangeListManager.getDefaultChangeList().getChanges());
|
||||
myTaskManager.activateTask(activeTask, true);
|
||||
Collection<Change> changes = myChangeListManager.getDefaultChangeList().getChanges();
|
||||
assertNotEmpty(changes);
|
||||
}
|
||||
finally {
|
||||
dialog.close(DialogWrapper.OK_EXIT_CODE);
|
||||
}
|
||||
UIUtil.dispatchAllInvocationEvents();
|
||||
List<ShelvedChangeList> lists = ShelveChangesManager.getInstance(getProject()).getShelvedChangeLists();
|
||||
assertTrue(lists.stream().anyMatch(list -> list.DESCRIPTION.equals(activeTask.getShelfName())));
|
||||
|
||||
assertEmpty(myChangeListManager.getDefaultChangeList().getChanges());
|
||||
myTaskManager.activateTask(activeTask, true);
|
||||
Collection<Change> changes = myChangeListManager.getDefaultChangeList().getChanges();
|
||||
assertNotEmpty(changes);
|
||||
}
|
||||
|
||||
public void testAssociatedChangelist() {
|
||||
ChangeListManager changeListManager = ChangeListManager.getInstance(getProject());
|
||||
LocalChangeList changeList = changeListManager.getDefaultChangeList();
|
||||
LocalChangeList changeList = myChangeListManager.getDefaultChangeList();
|
||||
assertNotNull(changeList);
|
||||
assertEquals(myTaskManager.getActiveTask(), myTaskManager.getAssociatedTask(changeList));
|
||||
LocalTaskImpl bond = new LocalTaskImpl("007", "Bond");
|
||||
TestRepository repository = new TestRepository();
|
||||
repository.setShouldFormatCommitMessage(true);
|
||||
bond.setRepository(repository);
|
||||
myTaskManager.activateTask(bond, false);
|
||||
assertEquals("007 Bond", new TaskCommitMessageProvider().getCommitMessage(changeList, getProject()));
|
||||
|
||||
myTaskManager.getState().createChangelist = false;
|
||||
runOpenTaskDialog(bond);
|
||||
assertEquals(1, bond.getChangeLists().size());
|
||||
assertEquals(changeList.getId(), bond.getChangeLists().get(0).id);
|
||||
assertEquals("007 Bond", myChangeListManager.getDefaultChangeList().getComment());
|
||||
}
|
||||
|
||||
private void runOpenTaskDialog(LocalTaskImpl task) {
|
||||
OpenTaskDialog dialog = new OpenTaskDialog(getProject(), task);
|
||||
try {
|
||||
dialog.createTask();
|
||||
}
|
||||
finally {
|
||||
dialog.close(DialogWrapper.OK_EXIT_CODE);
|
||||
}
|
||||
UIUtil.dispatchAllInvocationEvents();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user