package jas.util; import java.awt.Color; import java.awt.Dimension; import javax.swing.JEditorPane; import javax.swing.text.DefaultEditorKit; import javax.swing.text.Element; import javax.swing.text.View; import javax.swing.text.ViewFactory; import javax.swing.text.WrappedPlainView; /** Use this class to implement a component that contains line-wrapping text. */ public class WrappingTextArea extends JEditorPane { /** * @param text the text to display * @param editable whether the text is editable * @param background use <code>getBackground()</code> from the parent component * @param size the preferred size of this component */ public WrappingTextArea(final String text, final boolean editable, final Color background, final Dimension size) { final WrappingEditorKit kit = new WrappingEditorKit(); setEditorKitForContentType("text/wrapping", kit); setContentType("text/wrapping"); setBackground(background); setCaretColor(new Color(0, 0, 0)); if (editable) { getCaret().setBlinkRate(500); getCaret().setVisible(true); } setEditable(editable); setFont(new java.awt.Font("Dialog", 0, 12)); setText(text); m_size = size; } public Dimension getPreferredSize() { return m_size; } private Dimension m_size; } class WrappingEditorKit extends DefaultEditorKit { public ViewFactory getViewFactory() { if (m_viewFactory == null) m_viewFactory = new WrappingViewFactory(); return m_viewFactory; } private ViewFactory m_viewFactory; } class WrappingViewFactory implements ViewFactory { public View create(Element elem) { return new WrappedPlainView(elem, true); } }