JComponent () { myClassChooser.getTextField().getDocument().addDocumentListener(new DocumentAdapter() { @Override public void textChanged(@NotNull DocumentEvent event) { updateUI(); } }); myClassChooser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { PsiClass currentClass = getSelectedClass(); TreeClassChooser chooser = TreeClassChooserFactory.getInstance(myProject).createAllProjectScopeChooser( JavaDebuggerBundle.message("add.field.breakpoint.dialog.classchooser.title")); if (currentClass != null) { PsiFile containingFile = currentClass.getContainingFile(); if (containingFile != null) { PsiDirectory containingDirectory = containingFile.getContainingDirectory(); if (containingDirectory != null) { chooser.selectDirectory(containingDirectory); } } } chooser.showDialog(); PsiClass selectedClass = chooser.getSelected(); if (selectedClass != null) { myClassChooser.setText(selectedClass.getQualifiedName()); } } }); myFieldChooser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { PsiClass selectedClass = getSelectedClass(); if (selectedClass != null) { PsiField[] fields = selectedClass.getFields(); MemberChooser<PsiFieldMember> chooser = new MemberChooser<>(ContainerUtil.map2Array(fields, PsiFieldMember.class, PsiFieldMember::new), false, false, myProject); chooser.setTitle(JavaDebuggerBundle.message("add.field.breakpoint.dialog.field.chooser.title", fields.length)); chooser.setCopyJavadocVisible(false); chooser.show(); List<PsiFieldMember> selectedElements = chooser.getSelectedElements(); if (selectedElements != null && selectedElements.size() == 1) { PsiField field = selectedElements.get(0).getElement(); myFieldChooser.setText(field.getName()); } } } }); myFieldChooser.setEnabled(false); return myPanel; }