// Copyright 2005 The Apache Software Foundation | |
// | |
// Licensed under the Apache License, Version 2.0 (the "License"); | |
// you may not use this file except in compliance with the License. | |
// You may obtain a copy of the License at | |
// | |
// http://www.apache.org/licenses/LICENSE-2.0 | |
// | |
// Unless required by applicable law or agreed to in writing, software | |
// distributed under the License is distributed on an "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
// See the License for the specific language governing permissions and | |
// limitations under the License. | |
package org.apache.tapestry.coerce; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.apache.hivemind.util.Defense; | |
import org.apache.tapestry.form.IPropertySelectionModel; | |
/** | |
* {@link org.apache.tapestry.form.IPropertySelectionModel} created from a comma-seperated string by | |
* {@link org.apache.tapestry.coerce.StringToPropertySelectionModelConverter}. | |
* | |
* @author Howard M. Lewis Ship | |
* @since 4.0 | |
*/ | |
public final class StringConvertedPropertySelectionModel implements IPropertySelectionModel | |
{ | |
/** | |
* Entry. | |
* @author Howard Lewis Ship | |
*/ | |
private static class Entry | |
{ | |
String _label; | |
String _value; | |
Entry(String term) | |
{ | |
Defense.notNull(term, "term"); | |
int equalx = term.indexOf('='); | |
if (equalx < 0) | |
{ | |
_label = term.trim(); | |
_value = _label; | |
} | |
else | |
{ | |
_label = term.substring(0, equalx).trim(); | |
_value = term.substring(equalx + 1).trim(); | |
} | |
} | |
} | |
private final List _entries; | |
public StringConvertedPropertySelectionModel(String[] terms) | |
{ | |
Defense.notNull(terms, "terms"); | |
_entries = new ArrayList(terms.length); | |
for (int i = 0; i < terms.length; i++) | |
{ | |
_entries.add(new Entry(terms[i])); | |
} | |
} | |
public int getOptionCount() | |
{ | |
return _entries.size(); | |
} | |
private Entry getEntry(int index) | |
{ | |
return (Entry) _entries.get(index); | |
} | |
public Object getOption(int index) | |
{ | |
return getValue(index); | |
} | |
public String getLabel(int index) | |
{ | |
return getEntry(index)._label; | |
} | |
public String getValue(int index) | |
{ | |
return getEntry(index)._value; | |
} | |
public boolean isDisabled(int index) | |
{ | |
return false; | |
} | |
public Object translateValue(String value) | |
{ | |
// Values are the same on the client and the server, so no translation needed. | |
return value; | |
} | |
} |