001/* ======================================================
002 * Orson : a free chart beans library based on JFreeChart
003 * ======================================================
004 *
005 * (C) Copyright 2007, by Object Refinery Limited.
006 *
007 * Project Info:  not-yet-released
008 *
009 * This library is free software; you can redistribute it and/or modify it 
010 * under the terms of the GNU Lesser General Public License as published by 
011 * the Free Software Foundation; either version 2.1 of the License, or 
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but 
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
022 * USA.  
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
025 * in the United States and other countries.]
026 */
027
028package org.jfree.beans.editors;
029
030import java.beans.PropertyEditorSupport;
031
032import org.jfree.chart.axis.AxisLocation;
033
034/**
035 * A JavaBeans property editor for the {@link AxisLocation} class.
036 */
037public class AxisLocationEditor extends PropertyEditorSupport {
038
039    /**
040     * Returns a string representing the current value.
041     * 
042     * @return A string representing the current value.
043     */
044    public String getAsText() {
045        AxisLocation l = (AxisLocation) getValue();
046        if (AxisLocation.BOTTOM_OR_LEFT.equals(l)) {
047            return "BOTTOM OR LEFT";
048        }
049        else if (AxisLocation.BOTTOM_OR_RIGHT.equals(l)) {
050            return "BOTTOM OR RIGHT";
051        }
052        else if (AxisLocation.TOP_OR_LEFT.equals(l)) {
053            return "TOP OR LEFT";
054        }
055        else if (AxisLocation.TOP_OR_RIGHT.equals(l)) {
056            return "TOP OR RIGHT";
057        }
058        throw new RuntimeException("Unrecognised location.");
059    }
060    
061    /**
062     * Sets the current value by parsing the supplied string.
063     * 
064     * @param text  the string value.
065     * 
066     * @throws IllegalArgumentException if <code>text</code> is not one of
067     *     the values listed in {@link #getAsText()}.
068     */
069    public void setAsText(String text) throws IllegalArgumentException {
070        if ("BOTTOM OR LEFT".equals(text)) {
071            setValue(AxisLocation.BOTTOM_OR_LEFT);
072        }
073        else if ("BOTTOM OR RIGHT".equals(text)) {
074            setValue(AxisLocation.BOTTOM_OR_RIGHT);
075        }
076        else if ("TOP OR LEFT".equals(text)) {
077            setValue(AxisLocation.TOP_OR_LEFT);
078        }
079        else if ("TOP OR RIGHT".equals(text)) {
080            setValue(AxisLocation.TOP_OR_RIGHT);
081        }
082        else {
083            throw new IllegalArgumentException("Unrecognised 'text' argument.");
084        }
085    }
086    
087    /**
088     * Returns the valid string values for this property.
089     * 
090     * @return The valid string values for this property.
091     */
092    public String[] getTags() {
093        return new String[] {"TOP OR LEFT", "TOP OR RIGHT", "BOTTOM OR LEFT", 
094                "BOTTOM OR RIGHT"};
095    }
096
097    /**
098     * Returns a string for the property value.
099     * 
100     * @return A string for the property value.
101     */
102    public String getJavaInitializationString() {
103        AxisLocation l = (AxisLocation) getValue();
104        return "org.jfree.chart.axis." + l.toString();
105    }
106
107}