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