1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 #ifndef nsIRadioGroupContainer_h___ 7 #define nsIRadioGroupContainer_h___ 8 9 #include "nsISupports.h" 10 11 class nsIRadioVisitor; 12 class nsIFormControl; 13 14 namespace mozilla { 15 namespace dom { 16 class HTMLInputElement; 17 } // namespace dom 18 } // namespace mozilla 19 20 #define NS_IRADIOGROUPCONTAINER_IID \ 21 { 0x800320a0, 0x733f, 0x11e4, \ 22 { 0x82, 0xf8, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 } } 23 24 /** 25 * A container that has multiple radio groups in it, defined by name. 26 */ 27 class nsIRadioGroupContainer : public nsISupports 28 { 29 public: 30 31 NS_DECLARE_STATIC_IID_ACCESSOR(NS_IRADIOGROUPCONTAINER_IID) 32 33 /** 34 * Walk through the radio group, visiting each note with avisitor->Visit() 35 * @param aName the group name 36 * @param aVisitor the visitor to visit with 37 * @param aFlushContent whether to ensure the content model is up to date 38 * before walking. 39 */ 40 NS_IMETHOD WalkRadioGroup(const nsAString& aName, 41 nsIRadioVisitor* aVisitor, 42 bool aFlushContent) = 0; 43 44 /** 45 * Set the current radio button in a group 46 * @param aName the group name 47 * @param aRadio the currently selected radio button 48 */ 49 virtual void SetCurrentRadioButton(const nsAString& aName, 50 mozilla::dom::HTMLInputElement* aRadio) = 0; 51 52 /** 53 * Get the current radio button in a group 54 * @param aName the group name 55 * @return the currently selected radio button 56 */ 57 virtual mozilla::dom::HTMLInputElement* GetCurrentRadioButton(const nsAString& aName) = 0; 58 59 /** 60 * Get the next/prev radio button in a group 61 * @param aName the group name 62 * @param aPrevious, true gets previous radio button, false gets next 63 * @param aFocusedRadio the currently focused radio button 64 * @param aRadio the currently selected radio button [OUT] 65 */ 66 NS_IMETHOD GetNextRadioButton(const nsAString& aName, 67 const bool aPrevious, 68 mozilla::dom::HTMLInputElement* aFocusedRadio, 69 mozilla::dom::HTMLInputElement** aRadio) = 0; 70 71 /** 72 * Add radio button to radio group 73 * 74 * Note that forms do not do anything for this method since they already 75 * store radio groups on their own. 76 * 77 * @param aName radio group's name 78 * @param aRadio radio button's pointer 79 */ 80 virtual void AddToRadioGroup(const nsAString& aName, nsIFormControl* aRadio) = 0; 81 82 /** 83 * Remove radio button from radio group 84 * 85 * Note that forms do not do anything for this method since they already 86 * store radio groups on their own. 87 * 88 * @param aName radio group's name 89 * @param aRadio radio button's pointer 90 */ 91 virtual void RemoveFromRadioGroup(const nsAString& aName, nsIFormControl* aRadio) = 0; 92 93 virtual uint32_t GetRequiredRadioCount(const nsAString& aName) const = 0; 94 virtual void RadioRequiredWillChange(const nsAString& aName, 95 bool aRequiredAdded) = 0; 96 virtual bool GetValueMissingState(const nsAString& aName) const = 0; 97 virtual void SetValueMissingState(const nsAString& aName, bool aValue) = 0; 98 }; 99 100 NS_DEFINE_STATIC_IID_ACCESSOR(nsIRadioGroupContainer, 101 NS_IRADIOGROUPCONTAINER_IID) 102 103 #endif /* nsIRadioGroupContainer_h__ */ 104