001    /*
002     * $Id: TextOption.java,v 1.7 2012/02/19 17:35:49 davep Exp $
003     *
004     * This file is part of McIDAS-V
005     *
006     * Copyright 2007-2012
007     * Space Science and Engineering Center (SSEC)
008     * University of Wisconsin - Madison
009     * 1225 W. Dayton Street, Madison, WI 53706, USA
010     * https://www.ssec.wisc.edu/mcidas
011     * 
012     * All Rights Reserved
013     * 
014     * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
015     * some McIDAS-V source code is based on IDV and VisAD source code.  
016     * 
017     * McIDAS-V is free software; you can redistribute it and/or modify
018     * it under the terms of the GNU Lesser Public License as published by
019     * the Free Software Foundation; either version 3 of the License, or
020     * (at your option) any later version.
021     * 
022     * McIDAS-V is distributed in the hope that it will be useful,
023     * but WITHOUT ANY WARRANTY; without even the implied warranty of
024     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
025     * GNU Lesser Public License for more details.
026     * 
027     * You should have received a copy of the GNU Lesser Public License
028     * along with this program.  If not, see http://www.gnu.org/licenses.
029     */
030    
031    package edu.wisc.ssec.mcidasv.startupmanager.options;
032    
033    import java.awt.event.KeyAdapter;
034    import java.awt.event.KeyEvent;
035    
036    import javax.swing.JComponent;
037    import javax.swing.JTextField;
038    
039    import edu.wisc.ssec.mcidasv.startupmanager.options.OptionMaster.OptionPlatform;
040    import edu.wisc.ssec.mcidasv.startupmanager.options.OptionMaster.Type;
041    import edu.wisc.ssec.mcidasv.startupmanager.options.OptionMaster.Visibility;
042    
043    public class TextOption extends AbstractOption {
044        private String value = "";
045    
046        public TextOption(final String id, final String label, 
047            final String defaultValue, final OptionPlatform optionPlatform,
048            final Visibility optionVisibility) 
049        {
050            super(id, label, Type.TEXT, optionPlatform, optionVisibility);
051            setValue(defaultValue);
052        }
053    
054        public JComponent getComponent() {
055            final JTextField tf = new JTextField(getValue(), 10);
056            tf.addKeyListener(new KeyAdapter() {
057                public void keyReleased(final KeyEvent e) {
058                    setValue(tf.getText());
059                }
060            });
061            if (!onValidPlatform()) {
062                tf.setEnabled(false);
063            }
064            return tf;
065        }
066    
067        public String getValue() {
068            return value;
069        }
070    
071        public void setValue(final String newValue) {
072            value = newValue;
073        }
074    
075        public String toString() {
076            return String.format("[TextOption@%x: optionId=%s, value=%s]", 
077                hashCode(), getOptionId(), getValue());
078        }
079    }