mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-180834 Properly initialize TaskStateCombo with a project and a task
in "Open Task" and "Close Task" dialogs and no longer depend on where exactly $$$setupUI$$$() is called. It has broken down since after recent changes another call, namely setTitle(), was inserted before the assignments to myProject and myTask final fields in the constructor of OpenTaskDialog. Then $$$setupUI()$$$ call was moved right after the super() instead, and therefore createComponents() started observing null values of these fields instead of those actually passed in the constructor.
This commit is contained in:
@@ -56,6 +56,8 @@ public class CloseTaskDialog extends DialogWrapper {
|
||||
super(project, false);
|
||||
myProject = project;
|
||||
myTask = task;
|
||||
myStateCombo.setProject(myProject);
|
||||
myStateCombo.setTask(myTask);
|
||||
|
||||
setTitle("Close Task");
|
||||
myTaskLabel.setText(TaskUtil.getTrimmedSummary(task));
|
||||
@@ -119,7 +121,7 @@ public class CloseTaskDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
private void createUIComponents() {
|
||||
myStateCombo = new TaskStateCombo(myProject, myTask) {
|
||||
myStateCombo = new TaskStateCombo() {
|
||||
@Nullable
|
||||
@Override
|
||||
protected CustomTaskState getPreferredState(@NotNull TaskRepository repository, @NotNull Collection<CustomTaskState> available) {
|
||||
|
||||
@@ -66,10 +66,12 @@ public class OpenTaskDialog extends DialogWrapper {
|
||||
|
||||
public OpenTaskDialog(@NotNull final Project project, @NotNull final Task task) {
|
||||
super(project, false);
|
||||
setTitle("Open Task");
|
||||
|
||||
myProject = project;
|
||||
myTask = new LocalTaskImpl(task);
|
||||
myTaskStateCombo.setProject(myProject);
|
||||
myTaskStateCombo.setTask(myTask);
|
||||
|
||||
setTitle("Open Task");
|
||||
myNameField.setText(TaskUtil.getTrimmedSummary(task));
|
||||
myNameField.setEnabled(!task.isIssue());
|
||||
|
||||
@@ -103,7 +105,7 @@ public class OpenTaskDialog extends DialogWrapper {
|
||||
if (myUpdateState.isSelected()) {
|
||||
myTaskStateCombo.scheduleUpdateOnce();
|
||||
}
|
||||
|
||||
|
||||
myAdditionalPanel.setLayout(new BoxLayout(myAdditionalPanel, BoxLayout.Y_AXIS));
|
||||
myPanels = TaskDialogPanelProvider.getOpenTaskPanels(project, myTask);
|
||||
for (TaskDialogPanel panel : myPanels) {
|
||||
@@ -197,7 +199,7 @@ public class OpenTaskDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
private void createUIComponents() {
|
||||
myTaskStateCombo = new TaskStateCombo(myProject, myTask) {
|
||||
myTaskStateCombo = new TaskStateCombo() {
|
||||
@Nullable
|
||||
@Override
|
||||
protected CustomTaskState getPreferredState(@NotNull TaskRepository repository, @NotNull Collection<CustomTaskState> available) {
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.intellij.tasks.Task;
|
||||
import com.intellij.tasks.TaskRepository;
|
||||
import com.intellij.tasks.impl.TaskUiUtil.ComboBoxUpdater;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -36,8 +35,8 @@ public abstract class TaskStateCombo extends JPanel {
|
||||
return repository != null && repository.isSupported(TaskRepository.STATE_UPDATING);
|
||||
}
|
||||
|
||||
private final Project myProject;
|
||||
private final Task myTask;
|
||||
private Project myProject;
|
||||
private Task myTask;
|
||||
private final TemplateKindCombo myKindCombo = new TemplateKindCombo();
|
||||
|
||||
// For designer only
|
||||
@@ -121,6 +120,14 @@ public abstract class TaskStateCombo extends JPanel {
|
||||
return myKindCombo.getComboBox();
|
||||
}
|
||||
|
||||
public void setProject(@NotNull Project project) {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
public void setTask(@NotNull Task task) {
|
||||
myTask = task;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine what state should be initially selected in the list.
|
||||
* @param repository task repository to communicate with
|
||||
|
||||
Reference in New Issue
Block a user