001package org.jdesktop.swingx.plaf;
002
003import javax.swing.JTextArea;
004import javax.swing.plaf.TextUI;
005import javax.swing.text.JTextComponent;
006
007/**
008 * {@link PromptTextUI} implementation for rendering prompts on
009 * {@link JTextArea}s and uses a {@link JTextArea} as a prompt component.
010 * 
011 * @author Peter Weishapl <petw@gmx.net>
012 * 
013 */
014public class PromptTextAreaUI extends PromptTextUI {
015    /**
016     * Shared prompt renderer.
017     */
018    private final static JTextArea txt = new JTextArea();
019
020    /**
021     * Creates a new {@link PromptTextAreaUI}.
022     * 
023     * @param delegate
024     */
025    public PromptTextAreaUI(TextUI delegate) {
026        super(delegate);
027    }
028
029    /**
030     * Overrides {@link #getPromptComponent(JTextComponent)} to additionally
031     * update {@link JTextArea} specific properties.
032     */
033    @Override
034    public JTextComponent getPromptComponent(JTextComponent txt) {
035        JTextArea lbl = (JTextArea) super.getPromptComponent(txt);
036        JTextArea txtArea = (JTextArea) txt;
037
038        lbl.setColumns(txtArea.getColumns());
039        lbl.setRows(txtArea.getRows());
040
041        return lbl;
042    }
043
044    /**
045     * Returns a shared {@link JTextArea}.
046     */
047    @Override
048    protected JTextComponent createPromptComponent() {
049        txt.updateUI();
050        return txt;
051    }
052}