mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-177702 The dialog that comes up in response to "Create New Task" should allow the user to en...
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package com.intellij.tasks.ui;
|
||||
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.tasks.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -26,10 +27,6 @@ import javax.swing.*;
|
||||
*/
|
||||
public abstract class TaskDialogPanel {
|
||||
|
||||
//@NotNull
|
||||
//@Nls(capitalization = Nls.Capitalization.Title)
|
||||
//public abstract String getName();
|
||||
//
|
||||
@NotNull
|
||||
public abstract JComponent getPanel();
|
||||
|
||||
@@ -40,4 +37,6 @@ public abstract class TaskDialogPanel {
|
||||
public ValidationInfo validate() { return null; }
|
||||
|
||||
public abstract void commit();
|
||||
|
||||
public void taskNameChanged(Task oldTask, Task newTask) {}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
<grid id="27dc6" binding="myPanel" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="461" height="130"/>
|
||||
<xy x="20" y="20" width="461" height="134"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<grid id="29a80" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="29a80" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="5" left="0" bottom="10" right="0"/>
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||
@@ -21,21 +21,15 @@
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="ff158"/>
|
||||
<text value="Name:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<hspacer id="b92e0">
|
||||
<component id="ff158" class="com.intellij.ui.components.JBTextField" binding="myNameField">
|
||||
<constraints>
|
||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</hspacer>
|
||||
<component id="e8faa" class="javax.swing.JLabel" binding="myTaskNameLabel">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Task description"/>
|
||||
</properties>
|
||||
<properties/>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
|
||||
@@ -25,17 +25,21 @@ import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.tasks.*;
|
||||
import com.intellij.tasks.impl.LocalTaskImpl;
|
||||
import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.tasks.impl.TaskStateCombo;
|
||||
import com.intellij.tasks.impl.TaskUtil;
|
||||
import com.intellij.tasks.ui.TaskDialogPanel;
|
||||
import com.intellij.tasks.ui.TaskDialogPanelProvider;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.components.JBCheckBox;
|
||||
import com.intellij.ui.components.JBTextField;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Collection;
|
||||
@@ -51,22 +55,23 @@ public class OpenTaskDialog extends DialogWrapper {
|
||||
private JPanel myPanel;
|
||||
@BindControl(value = "clearContext", instant = true)
|
||||
private JCheckBox myClearContext;
|
||||
private JLabel myTaskNameLabel;
|
||||
private JBCheckBox myUpdateState;
|
||||
private TaskStateCombo myTaskStateCombo;
|
||||
private JPanel myAdditionalPanel;
|
||||
private JBTextField myNameField;
|
||||
|
||||
private final Project myProject;
|
||||
private final Task myTask;
|
||||
private final LocalTaskImpl myTask;
|
||||
private final List<TaskDialogPanel> myPanels;
|
||||
|
||||
public OpenTaskDialog(@NotNull final Project project, @NotNull final Task task) {
|
||||
super(project, false);
|
||||
myProject = project;
|
||||
myTask = task;
|
||||
setTitle("Open Task");
|
||||
myTaskNameLabel.setText(TaskUtil.getTrimmedSummary(task));
|
||||
myTaskNameLabel.setIcon(task.getIcon());
|
||||
|
||||
myProject = project;
|
||||
myTask = new LocalTaskImpl(task);
|
||||
myNameField.setText(TaskUtil.getTrimmedSummary(task));
|
||||
myNameField.setEnabled(!task.isIssue());
|
||||
|
||||
TaskManagerImpl taskManager = (TaskManagerImpl)TaskManager.getManager(myProject);
|
||||
ControlBinder binder = new ControlBinder(taskManager.getState());
|
||||
@@ -104,6 +109,16 @@ public class OpenTaskDialog extends DialogWrapper {
|
||||
for (TaskDialogPanel panel : myPanels) {
|
||||
myAdditionalPanel.add(panel.getPanel());
|
||||
}
|
||||
myNameField.getDocument().addDocumentListener(new DocumentAdapter() {
|
||||
@Override
|
||||
protected void textChanged(DocumentEvent e) {
|
||||
LocalTaskImpl oldTask = new LocalTaskImpl(myTask);
|
||||
myTask.setSummary(myNameField.getText());
|
||||
for (TaskDialogPanel panel : myPanels) {
|
||||
panel.taskNameChanged(oldTask, myTask);
|
||||
}
|
||||
}
|
||||
});
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
@@ -48,10 +48,10 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
private JTextField myChangelistName;
|
||||
private JBCheckBox myCreateBranch;
|
||||
private JBCheckBox myCreateChangelist;
|
||||
private ComboBox myBranchFrom;
|
||||
private ComboBox<VcsTaskHandler.TaskInfo> myBranchFrom;
|
||||
private JBLabel myFromLabel;
|
||||
private JBCheckBox myUseBranch;
|
||||
private ComboBox myUseBranchCombo;
|
||||
private ComboBox<VcsTaskHandler.TaskInfo> myUseBranchCombo;
|
||||
|
||||
private VcsTaskHandler myVcsTaskHandler;
|
||||
private static final String START_FROM_BRANCH = "start.from.branch";
|
||||
@@ -102,7 +102,7 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
//noinspection unchecked
|
||||
myBranchFrom.setModel(new DefaultComboBoxModel(tasks));
|
||||
myBranchFrom.setEnabled(true);
|
||||
myUseBranchCombo.setModel(new DefaultComboBoxModel(tasks));
|
||||
myUseBranchCombo.setModel(new DefaultComboBoxModel<>(tasks));
|
||||
final String startFrom = PropertiesComponent.getInstance(project).getValue(START_FROM_BRANCH);
|
||||
VcsTaskHandler.TaskInfo info = null;
|
||||
if (startFrom != null) {
|
||||
@@ -130,13 +130,22 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
myBranchFrom.setRenderer(new TaskInfoCellRenderer(myBranchFrom));
|
||||
myUseBranchCombo.setRenderer(new TaskInfoCellRenderer(myUseBranchCombo));
|
||||
}
|
||||
myBranchName.setText(myVcsTaskHandler != null
|
||||
? myVcsTaskHandler.cleanUpBranchName(myTaskManager.constructDefaultBranchName(task))
|
||||
: myTaskManager.suggestBranchName(task));
|
||||
myChangelistName.setText(myTaskManager.getChangelistName(task));
|
||||
myBranchName.setText(getBranchName(task));
|
||||
myChangelistName.setText(getChangelistName(task));
|
||||
updateFields(true);
|
||||
}
|
||||
|
||||
private String getChangelistName(Task task) {
|
||||
return myTaskManager.getChangelistName(task);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private String getBranchName(Task task) {
|
||||
return myVcsTaskHandler != null
|
||||
? myVcsTaskHandler.cleanUpBranchName(myTaskManager.constructDefaultBranchName(task))
|
||||
: myTaskManager.suggestBranchName(task);
|
||||
}
|
||||
|
||||
private void updateFields(boolean initial) {
|
||||
if (!initial && myBranchFrom.getItemCount() == 0 && myCreateBranch.isSelected()) {
|
||||
Messages.showWarningDialog(myPanel, "Can't create branch if no commit exists.\nCreate a commit first.", "Cannot Create Branch");
|
||||
@@ -229,6 +238,16 @@ public class VcsOpenTaskPanel extends TaskDialogPanel {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskNameChanged(Task oldTask, Task newTask) {
|
||||
if (getBranchName(oldTask).equals(myBranchName.getText())) {
|
||||
myBranchName.setText(getBranchName(newTask));
|
||||
}
|
||||
if (getChangelistName(oldTask).equals(myChangelistName.getText())) {
|
||||
myChangelistName.setText(getChangelistName(newTask));
|
||||
}
|
||||
}
|
||||
|
||||
private static class TaskInfoCellRenderer extends ColoredListCellRenderer<VcsTaskHandler.TaskInfo> {
|
||||
public TaskInfoCellRenderer(ComboBox from) {
|
||||
super(from);
|
||||
|
||||
Reference in New Issue
Block a user