001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.widgets;
003
004import java.awt.Component;
005import java.awt.event.FocusAdapter;
006import java.awt.event.FocusEvent;
007
008import javax.swing.text.JTextComponent;
009
010/**
011 * A helper class that selects all text as soon as a {@link JTextComponent} receives focus.
012 */
013public class SelectAllOnFocusGainedDecorator extends FocusAdapter {
014
015    /**
016     * Add the listener to a given text component.
017     * @param tc The text component.
018     */
019    public static void decorate(JTextComponent tc) {
020        if (tc == null) return;
021        tc.addFocusListener(new SelectAllOnFocusGainedDecorator());
022    }
023
024    @Override
025    public void focusGained(FocusEvent e) {
026        Component c = e.getComponent();
027        if (c instanceof JTextComponent) {
028            JTextComponent tc = (JTextComponent) c;
029            tc.selectAll();
030        }
031    }
032}