1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.common.ui.client.widgets; 17 18 import com.google.gwt.event.dom.client.BlurEvent; 19 import com.google.gwt.event.dom.client.BlurHandler; 20 import com.google.gwt.event.dom.client.FocusEvent; 21 import com.google.gwt.event.dom.client.FocusHandler; 22 import com.google.gwt.event.logical.shared.ValueChangeEvent; 23 import com.google.gwt.event.logical.shared.ValueChangeHandler; 24 import com.google.gwt.user.client.ui.RadioButton; 25 26 /** 27 * KSRadioButton wraps gwt RadioButton. This class provides most of the same functionality, but sets KS css styles 28 * for its default look and a variety of RadioButton events (for improved browser compatibility and customizability). 29 * 30 * @author Kuali Student Team 31 * 32 */ 33 public class KSRadioButton extends RadioButton{ 34 35 /** 36 * Creates a new radio button associated with a particular group name, and initialized with the given label (optionally treated as HTML). 37 * 38 * @param name the name of the radio button group 39 * @param label the text to appear in the label 40 * @param asHTML true to treat the label as HTML, false otherwise. 41 */ 42 public KSRadioButton(String group, String label, boolean asHTML) { 43 super(group, label, asHTML); 44 setupDefaultStyle(); 45 } 46 47 /** 48 * Creates a new radio associated with a particular group name, and initialized with the given HTML label. 49 * 50 * @param name the name of the radio button group 51 * @param label the text to appear in the label 52 */ 53 public KSRadioButton(String group, String label) { 54 super(group, label); 55 setupDefaultStyle(); 56 } 57 58 /** 59 * Creates a new radio associated with a particular group name. 60 * 61 * @param name the name of the radio button group 62 */ 63 public KSRadioButton(String group) { 64 super(group); 65 setupDefaultStyle(); 66 } 67 68 /** 69 * This method sets the default style for the radio button and radio button events. 70 * 71 */ 72 private void setupDefaultStyle() { 73 addStyleName("KS-Radio"); 74 75 this.addBlurHandler(new BlurHandler(){ 76 public void onBlur(BlurEvent event) { 77 KSRadioButton.this.removeStyleName("KS-Radio-Focus"); 78 79 } 80 }); 81 82 this.addFocusHandler(new FocusHandler(){ 83 public void onFocus(FocusEvent event) { 84 KSRadioButton.this.addStyleName("KS-Radio-Focus"); 85 86 } 87 }); 88 89 //hover does not function correctly on radio buttons 90 /* this.addMouseOverHandler(new MouseOverHandler(){ 91 public void onMouseOver(MouseOverEvent event) { 92 KSRadioButton.this.addStyleName(KSStyles.KS_RADIO_HOVER_STYLE); 93 94 } 95 }); 96 97 this.addMouseOutHandler(new MouseOutHandler(){ 98 99 public void onMouseOut(MouseOutEvent event) { 100 KSRadioButton.this.removeStyleName(KSStyles.KS_RADIO_HOVER_STYLE); 101 102 } 103 104 });*/ 105 106 this.addValueChangeHandler(new ValueChangeHandler<Boolean>(){ 107 @Override 108 109 public void onValueChange(ValueChangeEvent<Boolean> event) { 110 if(KSRadioButton.this.getValue()){ 111 KSRadioButton.this.addStyleName("KS-Radio-Selected"); 112 } 113 else{ 114 KSRadioButton.this.removeStyleName("KS-Radio-Selected"); 115 } 116 117 } 118 }); 119 120 } 121 122 123 } 124 125