IDEA-204190 New Task-Changelist assignement does not work

This commit is contained in:
Dmitry Avdeev
2018-12-13 17:57:04 +03:00
parent e156f8b272
commit 40daf408b6
5 changed files with 45 additions and 33 deletions
@@ -19,7 +19,7 @@ public abstract class TaskDialogPanelProvider {
private final static ExtensionPointName<TaskDialogPanelProvider> EP_NAME = ExtensionPointName.create("com.intellij.tasks.dialogPanelProvider");
public static List<TaskDialogPanel> getOpenTaskPanels(@NotNull Project project, @NotNull Task task) {
public static List<TaskDialogPanel> getOpenTaskPanels(@NotNull Project project, @NotNull LocalTask task) {
return ContainerUtil.mapNotNull(EP_NAME.getExtensionList(),
(NullableFunction<TaskDialogPanelProvider, TaskDialogPanel>)provider -> provider.getOpenTaskPanel(project, task));
}
@@ -29,9 +29,15 @@ public abstract class TaskDialogPanelProvider {
(NullableFunction<TaskDialogPanelProvider, TaskDialogPanel>)provider -> provider.getCloseTaskPanel(project, task));
}
@Deprecated
@Nullable
public abstract TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull Task task);
@Nullable
public TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull LocalTask task) {
return getOpenTaskPanel(project, (Task)task);
}
@Nullable
public abstract TaskDialogPanel getCloseTaskPanel(@NotNull Project project, @NotNull LocalTask task);
}
@@ -137,14 +137,14 @@ public class OpenTaskDialog extends DialogWrapper {
}
}
}
taskManager.activateTask(myTask, isClearContext());
if (myTask.getType() == TaskType.EXCEPTION && AnalyzeTaskStacktraceAction.hasTexts(myTask)) {
AnalyzeTaskStacktraceAction.analyzeStacktrace(myTask, myProject);
}
for (TaskDialogPanel panel : myPanels) {
panel.commit();
}
taskManager.activateTask(myTask, isClearContext());
if (myTask.getType() == TaskType.EXCEPTION && AnalyzeTaskStacktraceAction.hasTexts(myTask)) {
AnalyzeTaskStacktraceAction.analyzeStacktrace(myTask, myProject);
}
}
private boolean isClearContext() {
@@ -62,12 +62,14 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
private static final String START_FROM_BRANCH = "start.from.branch";
private final TaskManagerImpl myTaskManager;
private final Project myProject;
private final LocalTask myTask;
private final LocalTask myPreviousTask;
public VcsOpenTaskPanel(Project project, Task task) {
public VcsOpenTaskPanel(Project project, LocalTask task) {
myTaskManager = (TaskManagerImpl)TaskManager.getManager(project);
myProject = project;
myTask = task;
myPreviousTask = myTaskManager.getActiveTask();
ActionListener listener = new ActionListener() {
@Override
@@ -196,21 +198,20 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
myTaskManager.getState().createBranch = myCreateBranch.isSelected();
myTaskManager.getState().useBranch = myUseBranch.isSelected();
LocalTask localTask = myTaskManager.getActiveTask();
if (myShelveChanges.isSelected()) {
myTaskManager.shelveChanges(myPreviousTask, myPreviousTask.getSummary());
}
if (myCreateChangelist.isSelected()) {
myTaskManager.createChangeList(localTask, myChangelistName.getText());
myTaskManager.createChangeList(myTask, myChangelistName.getText());
}
else {
ChangeListManager changeListManager = ChangeListManager.getInstance(myProject);
String comment = TaskUtil.getChangeListComment(localTask);
String comment = TaskUtil.getChangeListComment(myTask);
changeListManager.editComment(changeListManager.getDefaultListName(), comment);
}
if (myCreateBranch.isSelected()) {
VcsTaskHandler.TaskInfo branchFrom = (VcsTaskHandler.TaskInfo)myBranchFrom.getSelectedItem();
Runnable createBranch = () -> myTaskManager.createBranch(localTask, myPreviousTask, myBranchName.getText(), branchFrom);
Runnable createBranch = () -> myTaskManager.createBranch(myTask, myPreviousTask, myBranchName.getText(), branchFrom);
VcsTaskHandler.TaskInfo[] current = myVcsTaskHandler.getCurrentTasks();
if (branchFrom != null && (current.length == 0 || !current[0].equals(branchFrom))) {
myVcsTaskHandler.switchToTask(branchFrom, createBranch);
@@ -224,7 +225,7 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
if (branch != null) {
VcsTaskHandler.TaskInfo[] tasks = myVcsTaskHandler.getCurrentTasks();
TaskManagerImpl.addBranches(myPreviousTask, tasks, true);
myVcsTaskHandler.switchToTask(branch, () -> TaskManagerImpl.addBranches(localTask, new VcsTaskHandler.TaskInfo[]{branch}, false));
myVcsTaskHandler.switchToTask(branch, () -> TaskManagerImpl.addBranches(myTask, new VcsTaskHandler.TaskInfo[]{branch}, false));
}
}
}
@@ -31,6 +31,12 @@ public class VcsTaskDialogPanelProvider extends TaskDialogPanelProvider {
@Nullable
@Override
public TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull Task task) {
return null;
}
@Nullable
@Override
public TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull LocalTask task) {
return TaskManager.getManager(project).isVcsEnabled() ? new VcsOpenTaskPanel(project, task) : null;
}
@@ -79,7 +79,7 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
assertEquals(2, myTaskManager.getLocalTasks().size());
@@ -98,7 +98,7 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
assertEquals(2, myChangeListManager.getChangeListsCopy().size());
assertEquals(defaultTask, myTaskManager.getAssociatedTask(myChangeListManager.getChangeListsCopy().get(0)));
activateAndCreateChangelist(localTask);
myTaskManager.activateTask(localTask, false);
assertEquals(1, localTask.getChangeLists().size());
assertEquals(1, defaultTask.getChangeLists().size());
@@ -135,12 +135,12 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
public void testAddChangeListViaCreateChangeListAction() {
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
myChangeListManager.waitUntilRefreshed();
LocalTask defaultTask = myTaskManager.findTask(LocalTaskImpl.DEFAULT_TASK_ID);
assertNotNull(defaultTask);
activateAndCreateChangelist(defaultTask);
myTaskManager.activateTask(defaultTask, false);
myChangeListManager.waitUntilRefreshed();
assertEquals(defaultTask, myTaskManager.getActiveTask());
@@ -174,12 +174,12 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
public void testRemoveChangelistViaVcsAction() {
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
myChangeListManager.waitUntilRefreshed();
LocalTask defaultTask = myTaskManager.findTask(LocalTaskImpl.DEFAULT_TASK_ID);
assertNotNull(defaultTask);
activateAndCreateChangelist(defaultTask);
myTaskManager.activateTask(defaultTask, false);
myChangeListManager.waitUntilRefreshed();
assertEquals(defaultTask, myTaskManager.getActiveTask());
@@ -200,23 +200,15 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
assertEquals(LocalChangeList.DEFAULT_NAME, defaultChangeList.getName());
}
private void activateAndCreateChangelist(Task task) {
LocalTaskImpl localTask = new LocalTaskImpl(task);
if (localTask.getChangeLists().isEmpty()) {
myTaskManager.createChangeList(localTask, myTaskManager.getChangelistName(localTask));
}
myTaskManager.activateTask(task, false);
}
public void testAddChangeListViaVcsAction() {
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
myChangeListManager.waitUntilRefreshed();
LocalTask defaultTask = myTaskManager.findTask(LocalTaskImpl.DEFAULT_TASK_ID);
assertNotNull(defaultTask);
activateAndCreateChangelist(defaultTask);
myTaskManager.activateTask(defaultTask, false);
myChangeListManager.waitUntilRefreshed();
assertEquals(defaultTask, myTaskManager.getActiveTask());
@@ -267,7 +259,7 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
myRepository.setCommitMessageFormat("{id} {summary} {number} {project}");
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
myChangeListManager.waitUntilRefreshed();
LocalTask localTask = myTaskManager.getActiveTask();
assertNotNull(localTask);
@@ -285,7 +277,7 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
Task task = myRepository.findTask("TEST-001");
assertNotNull(task);
assertEquals(1, myChangeListManager.getChangeListsCopy().size()); // default change list should be here
activateAndCreateChangelist(task);
runOpenTaskDialog(task);
myChangeListManager.waitUntilRefreshed();
assertEquals(2, myTaskManager.getLocalTasks().size());
@@ -413,15 +405,15 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
public void testRestoreChangelist() {
final LocalTaskImpl task = new LocalTaskImpl("foo", "bar");
activateAndCreateChangelist(task);
activateAndCreateChangelist(new LocalTaskImpl("next", ""));
runOpenTaskDialog(task);
runOpenTaskDialog(new LocalTaskImpl("next", ""));
final String changelistName = myTaskManager.getChangelistName(task);
myChangeListManager.removeChangeList(changelistName);
myChangeListManager.invokeAfterUpdate(() -> {
assertTrue(myTaskManager.isLocallyClosed(task));
activateAndCreateChangelist(task);
myTaskManager.activateTask(task, false);
assertNotNull(myChangeListManager.findChangeList(changelistName));
}, InvokeAfterUpdateMode.SYNCHRONOUS_NOT_CANCELLABLE, "foo", ModalityState.NON_MODAL);
}
@@ -481,7 +473,14 @@ public class TaskVcsTest extends CodeInsightFixtureTestCase {
assertEquals("007 Bond", myChangeListManager.getDefaultChangeList().getComment());
}
private void runOpenTaskDialog(LocalTaskImpl task) {
public void testOpenTask() {
LocalTaskImpl task = new LocalTaskImpl("id", "summary");
runOpenTaskDialog(task);
List<ChangeListInfo> lists = task.getChangeLists();
assertEquals(1, lists.size());
}
private void runOpenTaskDialog(Task task) {
OpenTaskDialog dialog = new OpenTaskDialog(getProject(), task);
try {
dialog.createTask();