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}