mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-204190 New Task-Changelist assignement does not work
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user