blob: b829d70c93feae51c639cfb94c6283d806722371 [file] [log] [blame]
package com.intellij.diagnostic.errordialog;
import com.intellij.openapi.ui.LabeledComponent;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ui.UIUtil;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.text.JTextComponent;
import java.awt.*;
/**
* @author ksafonov
*/
public class LabeledTextComponent {
public interface TextListener {
void textChanged(String newText);
}
private LabeledComponent<JPanel> myComponent;
private JPanel myContentPane;
private final JTextArea myTextPane;
public LabeledTextComponent() {
myTextPane = new JTextArea();
myComponent.getLabel().setMinimumSize(new Dimension(0, -1));
myComponent.getComponent().setLayout(new BorderLayout());
myTextPane.setBackground(UIUtil.getTextFieldBackground());
myComponent.getComponent().add(new JBScrollPane(myTextPane));
myComponent.getComponent().setBorder(IdeBorderFactory.createBorder());
}
public void setTitle(String title) {
myComponent.setText(title);
}
public JPanel getContentPane() {
return myContentPane;
}
public JTextArea getTextComponent() {
return myTextPane;
}
static void setText(JTextComponent pane, String text, boolean caretToTheEnd) {
pane.setText(text);
if (text != null && !caretToTheEnd && pane.getCaret() != null) {
// Upon some strange circumstances caret may be missing from the text component making the following line fail with NPE.
pane.setCaretPosition(0);
}
}
public void addCommentsListener(final TextListener l) {
myTextPane.getDocument().addDocumentListener(new DocumentAdapter() {
@Override
protected void textChanged(DocumentEvent e) {
l.textChanged(myTextPane.getText());
}
});
}
}