/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file. */
package er.extensions.components;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.eocontrol.EOSortOrdering;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
/**
* Useful for picking a String from a list.
*
* @binding item
* @binding selection
* @binding explanationComponentName
* @binding choices List (NSDictionary) containing the list of string to display
* @binding cancelPage A WOComponent that is used when people click on Cancel button
* @binding nextPage A WOComponent that is used when people click on Next button
*/
public class ERXStringListPicker extends WOComponent {
/**
* Do I need to update serialVersionUID?
* See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
* <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
*/
private static final long serialVersionUID = 1L;
public ERXStringListPicker(WOContext aContext) {
super(aContext);
}
public Object item, _selection;
public String explanationComponentName;
public NSDictionary choices;
public WOComponent cancelPage, nextPage;
private NSArray _list;
public NSArray list() {
if (_list == null) {
_list = EOSortOrdering.sortedArrayUsingKeyOrderArray(choices.allKeys(),
new NSArray(EOSortOrdering.sortOrderingWithKey("toString", EOSortOrdering.CompareAscending)));
}
return _list;
}
public Object selection() {
if (_selection==null && list().count() > 0)
_selection = list().objectAtIndex(0);
return _selection;
}
public String entityNameForNewInstances() { return (String)choices.objectForKey(_selection); }
public WOComponent next() { return nextPage; }
public WOComponent cancel() { return cancelPage; }
}