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}