001 /**
002 * Copyright 2010 The Kuali Foundation Licensed under the
003 * Educational Community License, Version 2.0 (the "License"); you may
004 * not use this file except in compliance with the License. You may
005 * obtain a copy of the License at
006 *
007 * http://www.osedu.org/licenses/ECL-2.0
008 *
009 * Unless required by applicable law or agreed to in writing,
010 * software distributed under the License is distributed on an "AS IS"
011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012 * or implied. See the License for the specific language governing
013 * permissions and limitations under the License.
014 */
015
016 package org.kuali.student.common.ui.client.widgets;
017
018 import com.google.gwt.event.dom.client.BlurEvent;
019 import com.google.gwt.event.dom.client.BlurHandler;
020 import com.google.gwt.event.dom.client.FocusEvent;
021 import com.google.gwt.event.dom.client.FocusHandler;
022 import com.google.gwt.event.logical.shared.ValueChangeEvent;
023 import com.google.gwt.event.logical.shared.ValueChangeHandler;
024 import com.google.gwt.user.client.ui.RadioButton;
025
026 /**
027 * KSRadioButton wraps gwt RadioButton. This class provides most of the same functionality, but sets KS css styles
028 * for its default look and a variety of RadioButton events (for improved browser compatibility and customizability).
029 *
030 * @author Kuali Student Team
031 *
032 */
033 public class KSRadioButton extends RadioButton{
034
035 /**
036 * Creates a new radio button associated with a particular group name, and initialized with the given label (optionally treated as HTML).
037 *
038 * @param name the name of the radio button group
039 * @param label the text to appear in the label
040 * @param asHTML true to treat the label as HTML, false otherwise.
041 */
042 public KSRadioButton(String group, String label, boolean asHTML) {
043 super(group, label, asHTML);
044 setupDefaultStyle();
045 }
046
047 /**
048 * Creates a new radio associated with a particular group name, and initialized with the given HTML label.
049 *
050 * @param name the name of the radio button group
051 * @param label the text to appear in the label
052 */
053 public KSRadioButton(String group, String label) {
054 super(group, label);
055 setupDefaultStyle();
056 }
057
058 /**
059 * Creates a new radio associated with a particular group name.
060 *
061 * @param name the name of the radio button group
062 */
063 public KSRadioButton(String group) {
064 super(group);
065 setupDefaultStyle();
066 }
067
068 /**
069 * This method sets the default style for the radio button and radio button events.
070 *
071 */
072 private void setupDefaultStyle() {
073 addStyleName("KS-Radio");
074
075 this.addBlurHandler(new BlurHandler(){
076 public void onBlur(BlurEvent event) {
077 KSRadioButton.this.removeStyleName("KS-Radio-Focus");
078
079 }
080 });
081
082 this.addFocusHandler(new FocusHandler(){
083 public void onFocus(FocusEvent event) {
084 KSRadioButton.this.addStyleName("KS-Radio-Focus");
085
086 }
087 });
088
089 //hover does not function correctly on radio buttons
090 /* this.addMouseOverHandler(new MouseOverHandler(){
091 public void onMouseOver(MouseOverEvent event) {
092 KSRadioButton.this.addStyleName(KSStyles.KS_RADIO_HOVER_STYLE);
093
094 }
095 });
096
097 this.addMouseOutHandler(new MouseOutHandler(){
098
099 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 KSRadioButton.this.setFocus(false);
116 }
117
118 }
119 });
120
121 }
122
123
124 }
125
126