/** * Sets the state of this check box to the specified state. The boolean value <code>true</code> * indicates the "on" state, and <code>false</code> indicates the "off" state. * * <p>Note that this method should be primarily used to initialize the state of the checkbox. * Programmatically setting the state of the checkbox will <i>not</i> trigger an <code>ItemEvent * </code>. The only way to trigger an <code>ItemEvent</code> is by user interaction. * * @param state the boolean state of the check box * @see #getState */ public void setState(boolean state) { /* Cannot hold check box lock when calling group.setSelectedCheckbox. */ CheckboxGroup group = this.group; if (group != null) { if (state) { group.setSelectedCheckbox(this); } else if (group.getSelectedCheckbox() == this) { state = true; } } setStateInternal(state); }
public void restoreState(FacesContext _context, Object _state) { _values = (Object[]) _state; super.restoreState(_context, _values[0]); this.allowBlank = (Boolean) _values[1]; this.handleConfig("allowBlank", this.allowBlank); this.blankText = (String) _values[2]; this.handleConfig("blankText", this.blankText); }
/** * Constructs a Checkbox with the specified label, set to the specified state, and in the * specified check box group. * * @param label a string label for this check box, or <code>null</code> for no label. * @param state the initial state of this check box. * @param group a check box group for this check box, or <code>null</code> for no group. * @exception HeadlessException if <code>GraphicsEnvironment.isHeadless</code> returns <code>true * </code> * @see j86.java.awt.GraphicsEnvironment#isHeadless * @since JDK1.1 */ public Checkbox(String label, boolean state, CheckboxGroup group) throws HeadlessException { GraphicsEnvironment.checkHeadless(); this.label = label; this.state = state; this.group = group; if (state && (group != null)) { group.setSelectedCheckbox(this); } }
/** * Sets this check box's group to the specified check box group. If this check box is already in a * different check box group, it is first taken out of that group. * * <p>If the state of this check box is <code>true</code> and the new group already has a check * box selected, this check box's state is changed to <code>false</code>. If the state of this * check box is <code>true</code> and the new group has no check box selected, this check box * becomes the selected checkbox for the new group and its state is <code>true</code>. * * @param g the new check box group, or <code>null</code> to remove this check box from any check * box group * @see #getCheckboxGroup */ public void setCheckboxGroup(CheckboxGroup g) { CheckboxGroup oldGroup; boolean oldState; /* Do nothing if this check box has already belonged * to the check box group g. */ if (this.group == g) { return; } synchronized (this) { oldGroup = this.group; oldState = getState(); this.group = g; CheckboxPeer peer = (CheckboxPeer) this.peer; if (peer != null) { peer.setCheckboxGroup(g); } if (this.group != null && getState()) { if (this.group.getSelectedCheckbox() != null) { setState(false); } else { this.group.setSelectedCheckbox(this); } } } /* Locking check box below could cause deadlock with * CheckboxGroup's setSelectedCheckbox method. * * Fix for 4726853 by [email protected] * Here we should check if this check box was selected * in the previous group and set selected check box to * null for that group if so. */ if (oldGroup != null && oldState) { oldGroup.setSelectedCheckbox(null); } }
@Test public void testCheckboxGroup() { CheckboxGroup<String> group = new CheckboxGroup<>("cg", KEYS); assertNull(group.getValue()); assertFalse(group.isChecked("a")); group.setValue(new String[] {"a"}); assertTrue(group.isChecked("a")); assertFalse(group.isChecked("b")); group.getPrinter(out).print("a", "alpha"); out.assertOutNormed("<label><input type='checkbox' name='cg' value='a' checked>alpha</label>"); group.getPrinter(out).print(null, null); out.assertOutNormed("<input type='checkbox' name='cg' value=''>"); assertSame(KEYS, group.getKeyList()); group.getPrinter(out).print(1); out.assertOutNormed("<label><input type='checkbox' name='cg' value='b'>beta</label>"); group.setValue(null); group.print(out); out.assertOutNormed( "<label><input type='checkbox' name='cg' value='a'>alpha</label><br>\n<label><input type='checkbox' name='cg' value='b'>beta</label><br>\n"); }