001// Copyright 2004, 2005 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.tapestry.form;
016
017/**
018 *  Implementation of {@link IPropertySelectionModel} that allows one String from
019 *  an array of Strings to be selected as the property.
020 *
021 *  <p>Uses a simple index number as the value (used to represent the selected String).
022 *  This assumes that the possible values for the Strings will remain constant between
023 *  request cycles.
024 *
025 *  @author Howard Lewis Ship
026 * 
027 **/
028
029public class StringPropertySelectionModel implements IPropertySelectionModel
030{
031    private String[] options;
032
033    /**
034     * Standard constructor.
035     *
036     * The options are retained (not copied).
037     **/
038
039    public StringPropertySelectionModel(String[] options)
040    {
041        this.options = options;
042    }
043
044    public int getOptionCount()
045    {
046        return options.length;
047    }
048
049    public Object getOption(int index)
050    {
051        return options[index];
052    }
053
054    /**
055     *  Labels match options.
056     *
057     **/
058
059    public String getLabel(int index)
060    {
061        return options[index];
062    }
063
064    /**
065     *  Values are indexes into the array of options.
066     *
067     **/
068
069    public String getValue(int index)
070    {
071        return Integer.toString(index);
072    }
073
074    public Object translateValue(String value)
075    {
076        int index;
077
078        index = Integer.parseInt(value);
079
080        return options[index];
081    }
082
083}