diff --git a/src/main/java/gitflow/ui/GitflowTaskDialogPanelProvider.java b/src/main/java/gitflow/ui/GitflowTaskDialogPanelProvider.java index 6e9e662..400730f 100644 --- a/src/main/java/gitflow/ui/GitflowTaskDialogPanelProvider.java +++ b/src/main/java/gitflow/ui/GitflowTaskDialogPanelProvider.java @@ -1,10 +1,9 @@ package gitflow.ui; import com.intellij.openapi.project.Project; import com.intellij.tasks.LocalTask; -import com.intellij.tasks.Task; import com.intellij.tasks.TaskManager; +import com.intellij.tasks.actions.vcs.VcsTaskDialogPanelProvider; import com.intellij.tasks.ui.TaskDialogPanel; -import com.intellij.tasks.ui.TaskDialogPanelProvider; import git4idea.branch.GitBranchUtil; import git4idea.repo.GitRepository; import gitflow.GitflowBranchUtil; @@ -12,41 +11,36 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.function.BiFunction; +import java.util.function.Function; -public class GitflowTaskDialogPanelProvider extends TaskDialogPanelProvider { - - @Deprecated - @Nullable - @Override - public TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull Task task) { - return null; - } - +public class GitflowTaskDialogPanelProvider extends VcsTaskDialogPanelProvider { @Nullable @Override public TaskDialogPanel getOpenTaskPanel(@NotNull Project project, @NotNull LocalTask task) { - GitRepository currentRepo = GitBranchUtil.getCurrentRepository(project); - GitflowBranchUtil branchUtil = GitflowBranchUtilManager.getBranchUtil(currentRepo); - if (branchUtil.hasGitflow()) { - return TaskManager.getManager(project).isVcsEnabled() ? new GitflowOpenTaskPanel(project, task, currentRepo) : null; - } - else{ - return null; - } + return getTaskPanel( + project, + task, + (p, t) -> (r -> new GitflowOpenTaskPanel(p, t, r)) + ); } @Nullable @Override public TaskDialogPanel getCloseTaskPanel(@NotNull Project project, @NotNull LocalTask task) { + return getTaskPanel( + project, + task, + (p, t) -> (r -> new GitflowCloseTaskPanel(p, t, r)) + ); + } + + private TaskDialogPanel getTaskPanel(@NotNull Project project, @NotNull LocalTask task, BiFunction> zz) { GitRepository currentRepo = GitBranchUtil.getCurrentRepository(project); GitflowBranchUtil branchUtil = GitflowBranchUtilManager.getBranchUtil(currentRepo); - if (branchUtil.hasGitflow()) { - return TaskManager.getManager(project).isVcsEnabled() ? new GitflowCloseTaskPanel(project, task, currentRepo) : null; - } - else{ - return null; - } + return branchUtil != null && branchUtil.hasGitflow() && TaskManager.getManager(project).isVcsEnabled() + ? zz.apply(project, task).apply(currentRepo) + : null; } - }