Debugger: Synchronize "Add field breakpoint" dialog with the platform code
This commit is contained in:
+23
-25
@@ -24,11 +24,12 @@ import com.intellij.openapi.application.TransactionGuard;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.ui.DialogWrapper;
|
import com.intellij.openapi.ui.DialogWrapper;
|
||||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||||
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import kotlin.Unit;
|
import com.intellij.ui.DocumentAdapter;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject;
|
import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject;
|
||||||
import org.jetbrains.kotlin.idea.core.util.UiUtilsKt;
|
|
||||||
import org.jetbrains.kotlin.psi.KtProperty;
|
import org.jetbrains.kotlin.psi.KtProperty;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -50,13 +51,12 @@ public abstract class AddFieldBreakpointDialog extends DialogWrapper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected JComponent createCenterPanel() {
|
protected JComponent createCenterPanel() {
|
||||||
UiUtilsKt.onTextChange(
|
myClassChooser.getTextField().getDocument().addDocumentListener(new DocumentAdapter() {
|
||||||
myClassChooser.getTextField(),
|
@Override
|
||||||
(DocumentEvent e) -> {
|
public void textChanged(@NotNull DocumentEvent event) {
|
||||||
updateUI();
|
updateUI();
|
||||||
return Unit.INSTANCE;
|
}
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
myClassChooser.addActionListener(e -> {
|
myClassChooser.addActionListener(e -> {
|
||||||
PsiClass currentClass = getSelectedClass();
|
PsiClass currentClass = getSelectedClass();
|
||||||
@@ -80,19 +80,17 @@ public abstract class AddFieldBreakpointDialog extends DialogWrapper {
|
|||||||
|
|
||||||
myFieldChooser.addActionListener(e -> {
|
myFieldChooser.addActionListener(e -> {
|
||||||
PsiClass selectedClass = getSelectedClass();
|
PsiClass selectedClass = getSelectedClass();
|
||||||
if (selectedClass == null) {
|
if (selectedClass != null) {
|
||||||
return;
|
DescriptorMemberChooserObject[] properties = FieldBreakpointDialogUtilKt.collectProperties(selectedClass);
|
||||||
}
|
MemberChooser<DescriptorMemberChooserObject> chooser = new MemberChooser<>(properties, false, false, myProject);
|
||||||
|
chooser.setTitle(DebuggerBundle.message("add.field.breakpoint.dialog.field.chooser.title", properties.length));
|
||||||
DescriptorMemberChooserObject[] properties = FieldBreakpointDialogUtilKt.collectProperties(selectedClass);
|
chooser.setCopyJavadocVisible(false);
|
||||||
MemberChooser<DescriptorMemberChooserObject> chooser = new MemberChooser<>(properties, false, false, myProject);
|
TransactionGuard.getInstance().submitTransactionAndWait(chooser::show);
|
||||||
chooser.setTitle(DebuggerBundle.message("add.field.breakpoint.dialog.field.chooser.title", properties.length));
|
List<DescriptorMemberChooserObject> selectedElements = chooser.getSelectedElements();
|
||||||
chooser.setCopyJavadocVisible(false);
|
if (selectedElements != null && selectedElements.size() == 1) {
|
||||||
TransactionGuard.getInstance().submitTransactionAndWait(chooser::show);
|
KtProperty field = (KtProperty) selectedElements.get(0).getElement();
|
||||||
List<DescriptorMemberChooserObject> selectedElements = chooser.getSelectedElements();
|
myFieldChooser.setText(field.getName());
|
||||||
if (selectedElements != null && selectedElements.size() == 1) {
|
}
|
||||||
KtProperty field = (KtProperty) selectedElements.get(0).getElement();
|
|
||||||
myFieldChooser.setText(field.getName());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
myFieldChooser.setEnabled(false);
|
myFieldChooser.setEnabled(false);
|
||||||
@@ -105,9 +103,9 @@ public abstract class AddFieldBreakpointDialog extends DialogWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private PsiClass getSelectedClass() {
|
private PsiClass getSelectedClass() {
|
||||||
PsiManager psiManager = PsiManager.getInstance(myProject);
|
PsiManager psiManager = PsiManager.getInstance(myProject);
|
||||||
String classQName = myClassChooser.getText();
|
String classQName = myClassChooser.getText();
|
||||||
if (classQName.isEmpty()) {
|
if (StringUtil.isEmpty(classQName)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return JavaPsiFacade.getInstance(psiManager.getProject()).findClass(classQName, GlobalSearchScope.allScope(myProject));
|
return JavaPsiFacade.getInstance(psiManager.getProject()).findClass(classQName, GlobalSearchScope.allScope(myProject));
|
||||||
|
|||||||
Reference in New Issue
Block a user