01 
02 /*
03  *  JScripter Standard 1.0 - To Script In Java
04  *  Copyright (C) 2008-2011  J.J.Liu<jianjunliu@126.com> <http://www.jscripter.org>
05  *  
06  *  This program is free software: you can redistribute it and/or modify
07  *  it under the terms of the GNU Affero General Public License as published by
08  *  the Free Software Foundation, either version 3 of the License, or
09  *  (at your option) any later version.
10  *  
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU Affero General Public License for more details.
15  *  
16  *  You should have received a copy of the GNU Affero General Public License
17  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 package jsx.ui.html;
21 
22 import jsx.dom.Markups;
23 
24 /**
25  * <p>A base class for HTML elementary radio widgets.</p>
26  * 
27  * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
28  */
29 public class Radio extends Choice
30 {
31     /**
32      * <p>Constructs a radio widget joining a group.</p>
33      * <p>A radio widget constructed by this constructor behaves exactly same as
34      * the basic HTML radio elements.</p>
35      * @param group A group to join.
36      * @since 1.0
37      */
38     public Radio(Group group) {
39         super(group, Markups.radio(group.getName()));
40     }
41 
42     /**
43      * <p>Returns the HTML type for the input widget.</p>
44      * <p>This method simply returns the text of "radio".</p>
45      * @return The type of the input widget.
46      * @since 1.0
47      */
48     @Override
49     public String type() {
50         return "radio";
51     }
52 
53     /**
54      * <p>Synchronizes the state of the radio widget.</p>
55      * <p>This method invokes the overridden method of the super class. It may force
56      * the whole group to synchronize depending on the "checked" states.</p>
57      * @return <tt>true</tt> if the "checked" state of the underlying input element has been
58      * changed; <tt>false</tt>, otherwise.
59      * @since 1.0
60      */
61     @Override
62     public boolean synchronize() {
63         boolean changed = super.synchronize();
64         if (changed) {
65             ini(this).var(Radio.GROUP).synchronize();
66         }
67         return changed;
68     }
69 }