mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
save task on commit
This commit is contained in:
@@ -51,6 +51,8 @@ public abstract class TaskManager {
|
||||
public abstract Task updateIssue(String id);
|
||||
|
||||
public abstract LocalTask[] getLocalTasks();
|
||||
|
||||
public abstract LocalTask addTask(Task issue);
|
||||
|
||||
public abstract LocalTask createLocalTask(String summary);
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ public class SwitchTaskAction extends BaseTaskAction {
|
||||
}
|
||||
if (vcsEnabled && !temp.isEmpty()) {
|
||||
group.addSeparator();
|
||||
for (int i = 0, tempSize = temp.size(); i < Math.min(tempSize, 5); i++) {
|
||||
for (int i = 0, tempSize = temp.size(); i < Math.min(tempSize, 15); i++) {
|
||||
LocalTask task = temp.get(i);
|
||||
group.add(createActivateTaskAction(manager, project, task, shiftPressed, true));
|
||||
}
|
||||
|
||||
+36
-2
@@ -20,11 +20,16 @@ import com.intellij.openapi.vcs.CheckinProjectPanel;
|
||||
import com.intellij.openapi.vcs.changes.CommitContext;
|
||||
import com.intellij.openapi.vcs.checkin.CheckinHandler;
|
||||
import com.intellij.openapi.vcs.checkin.CheckinHandlerFactory;
|
||||
import com.intellij.tasks.LocalTask;
|
||||
import com.intellij.tasks.Task;
|
||||
import com.intellij.tasks.TaskManager;
|
||||
import com.intellij.tasks.TaskRepository;
|
||||
import com.intellij.tasks.context.WorkingContextManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
@@ -41,12 +46,23 @@ public class TaskCheckinHandlerFactory extends CheckinHandlerFactory {
|
||||
final String message = panel.getCommitMessage();
|
||||
if (message != null) {
|
||||
final Project project = panel.getProject();
|
||||
TaskManagerImpl manager = (TaskManagerImpl)TaskManager.getManager(project);
|
||||
final TaskManagerImpl manager = (TaskManagerImpl)TaskManager.getManager(project);
|
||||
if (manager.getState().saveContextOnCommit) {
|
||||
final Task task = findTask(message, manager);
|
||||
|
||||
//noinspection SSBasedInspection
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
WorkingContextManager.getInstance(project).saveContext(null, message);
|
||||
final WorkingContextManager contextManager = WorkingContextManager.getInstance(project);
|
||||
if (task != null) {
|
||||
LocalTask localTask = manager.addTask(task);
|
||||
localTask.setUpdated(new Date());
|
||||
contextManager.saveContext(localTask);
|
||||
}
|
||||
else {
|
||||
contextManager.saveContext(null, message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -54,4 +70,22 @@ public class TaskCheckinHandlerFactory extends CheckinHandlerFactory {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Task findTask(String message, TaskManager manager) {
|
||||
TaskRepository[] repositories = manager.getAllRepositories();
|
||||
for (TaskRepository repository : repositories) {
|
||||
String id = repository.extractId(message);
|
||||
try {
|
||||
Task task = repository.findTask(id);
|
||||
if (task != null) {
|
||||
return task;
|
||||
}
|
||||
}
|
||||
catch (Exception ignore) {
|
||||
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,6 +278,13 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalTask addTask(Task issue) {
|
||||
LocalTaskImpl task = issue instanceof LocalTaskImpl ? (LocalTaskImpl)issue : new LocalTaskImpl(issue);
|
||||
addTask(task);
|
||||
return task;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalTaskImpl createLocalTask(String summary) {
|
||||
return createTask(LOCAL_TASK_ID_FORMAT.format(myConfig.localTasksCounter++), summary);
|
||||
@@ -353,7 +360,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
task.setUpdated(new Date());
|
||||
}
|
||||
task.setActive(true);
|
||||
myTasks.put(task.getId(), task);
|
||||
addTask(task);
|
||||
if (task.isIssue()) {
|
||||
StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new Runnable() {
|
||||
public void run() {
|
||||
@@ -374,6 +381,10 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
return task;
|
||||
}
|
||||
|
||||
private void addTask(LocalTaskImpl task) {
|
||||
myTasks.put(task.getId(), task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean testConnection(final TaskRepository repository) {
|
||||
|
||||
@@ -446,7 +457,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
myTasks.clear();
|
||||
for (LocalTaskImpl task : config.tasks) {
|
||||
if (!task.isClosed()) {
|
||||
myTasks.put(task.getId(), task);
|
||||
addTask(task);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -555,7 +566,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
LocalTaskImpl defaultTask = myTasks.get(LocalTaskImpl.DEFAULT_TASK_ID);
|
||||
if (defaultTask == null) {
|
||||
defaultTask = createDefaultTask();
|
||||
myTasks.put(defaultTask.getId(), defaultTask);
|
||||
addTask(defaultTask);
|
||||
}
|
||||
// make sure the task is associated with default changelist
|
||||
LocalChangeList defaultList = myChangeListManager.findChangeList(LocalChangeList.DEFAULT_NAME);
|
||||
@@ -577,9 +588,9 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
if (!infos.contains(info)) {
|
||||
String name = localChangeList.getName();
|
||||
String id = extractId(name);
|
||||
LocalTask existing = id == null ? myTasks.get(name) : myTasks.get(id);
|
||||
LocalTaskImpl existing = id == null ? myTasks.get(name) : myTasks.get(id);
|
||||
if (existing != null) {
|
||||
((LocalTaskImpl)existing).getChangeLists().add(info);
|
||||
existing.getChangeLists().add(info);
|
||||
} else {
|
||||
LocalTaskImpl task;
|
||||
if (id == null) {
|
||||
@@ -590,7 +601,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
task.setIssue(true);
|
||||
}
|
||||
task.getChangeLists().add(info);
|
||||
myTasks.put(task.getId(), task);
|
||||
addTask(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user