1 24 package org.riotfamily.forms.element.select; 25 26 import org.riotfamily.forms.event.JavaScriptEvent; 27 import org.riotfamily.forms.request.FormRequest; 28 29 30 34 public abstract class AbstractSingleSelectElement 35 extends AbstractSelectElement { 36 37 private Object selectedValue; 38 39 public final void setValue(Object value) { 40 this.selectedValue = value; 41 } 42 43 public Object getValue() { 44 return selectedValue; 45 } 46 47 protected boolean hasSelection() { 48 return selectedValue != null; 49 } 50 51 public boolean isSelected(Option option) { 52 return hasSelection() && selectedValue.equals(option.getValue()); 53 } 54 55 58 public void processRequest(FormRequest request) { 59 updateSelection(request.getParameter(getParamName())); 60 } 61 62 private void updateSelection(String index) { 63 int i = -1; 64 if (index != null) { 65 i = Integer.parseInt(index); 66 } 67 if (i >= 0) { 68 Option option = (Option) getOptions().get(i); 69 selectedValue = option.getValue(); 70 } 71 else { 72 selectedValue = null; 73 } 74 validate(); 75 } 76 77 public void handleJavaScriptEvent(JavaScriptEvent event) { 78 if (event.getType() == JavaScriptEvent.ON_CHANGE) { 79 Object oldValue = selectedValue; 80 updateSelection(event.getValue()); 81 fireChangeEvent(selectedValue, oldValue); 82 } 83 } 84 85 } | Popular Tags |