Attached is the current version of RadioButton Group Name support.

As it happens, your hint about ORadioButtonModel::SetSiblingPropsTo()
solves the problems I had last time.  It now operates as expected in the
"migration" scenario, changing an existing set of RadioButtons with the
same name to two (or more) sets or RadioButtons by setting the GroupName
property without changing the Name property.

There are only four things worth mentioning:

1. The GroupName property has not yet been brought to the ODF file
format, and thus it currently relies on the default property support.

2. GroupName hasn't yet been hooked into any import filters, so Excel
import won't start using GroupName yet.

3. I haven't written any new unit tests to for the GroupName support.

I'll be working on fixing 1 through 3 next.

4. About those unit tests... :-)

First of all, it helps to know that I need to run `dmake` within
qadevOOo before `dmake` in forms/qa/integration/forms will work.

Next, the tests work...inconsistently.  Even against an *unmodified*
OpenOffice.org 2.4.0 installation (as provided by the .tar.gz on the
openoffice.org site), `dmake run_RadioButtons` fails the *first* time
it's run within checkThreeGroups -- somehow changing the selected
RadioButtons results in NO radio buttons being selected (bizarre!).
This results in one window remaining open after the test.

Run `dmake run_RadioButtons` a second time (while the remaining window
from the first run is still open), and all tests work.  Close the window
"left behind" by the failing run and it will fail in the same spot
again.

Very odd.

Doubly odd is that occasionally I get a NullPointerException:

        java.lang.NullPointerException
        LOG>    at 
integration.forms.RadioButtons.checkRadio(RadioButtons.java:329)
        LOG>    at 
integration.forms.RadioButtons.checkCalcPageSwitch(RadioButtons.java:251)
        LOG>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        LOG>    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        LOG>    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        LOG>    at java.lang.reflect.Method.invoke(Method.java:585)
        LOG>    at complexlib.MethodThread.run(Unknown Source)
        LOG> Finished null
        ***** State for integration.forms.RadioButtons ******
        checkCalcPageSwitch - java.lang.NullPointerException

Not sure what's going on there.

Again, this happens against both an OpenOffice.org 2.4.0 install and
against a build with my changes, so I don't think this is due to me.

Questions:

On Wed, 2008-02-06 at 16:48 +0100, Frank Schönheit - Sun Microsystems Germany 
wrote:
> Some more things I noticed, which you should address at some stage (not
> necessarily now):
> - m_sGroupName must also be initialized in the "cloning" ctor of
>   ORadioButtonModel

Is this "cloning" ctor the ORadioButtonModel(const ORadioButtonModel*
_pOriginal, const Reference<XMultiServiceFactory>& _rxFactory )
constructor, or a different one?  If it is, this has been fixed.

> - don't rely on the GroupName property being present, check for
>   existence in every place where you use it

This should be done now.

> - ::propertyChange: when the Name changes, but the GroupName is not
>   empty, then nothing should be done at all ... shouldn't it?

That sounds reasonable, and has been done in the attached patch.

Thanks,
 - Jon

Index: extensions/inc/extensio.hrc
===================================================================
RCS file: /cvs/util/extensions/inc/extensio.hrc,v
retrieving revision 1.33
diff -u -p -r1.33 extensio.hrc
--- extensions/inc/extensio.hrc	27 Nov 2007 11:51:34 -0000	1.33
+++ extensions/inc/extensio.hrc	29 Mar 2008 19:39:04 -0000
@@ -162,7 +162,7 @@
 
 //-----------------------------------------------------------------------
     // FREE
-    // FREE
+#define HID_PROP_GROUP_NAME                     (HID_FORMS_START +   1)
 #define HID_PROP_GROUPBOX						(HID_FORMS_START +   2)
 #define HID_PROP_CONTROLSOURCE					(HID_FORMS_START +   3)
 #define HID_PROP_NAME							(HID_FORMS_START +   4)
Index: extensions/source/propctrlr/formmetadata.hxx
===================================================================
RCS file: /cvs/util/extensions/source/propctrlr/formmetadata.hxx,v
retrieving revision 1.34
diff -u -p -r1.34 formmetadata.hxx
--- extensions/source/propctrlr/formmetadata.hxx	27 Nov 2007 11:52:15 -0000	1.34
+++ extensions/source/propctrlr/formmetadata.hxx	29 Mar 2008 19:39:04 -0000
@@ -178,6 +178,7 @@ namespace pcr
 	#define PROPERTY_ID_ALLOWADDITIONS		 20
 	#define PROPERTY_ID_ALLOWEDITS			 21
 	#define PROPERTY_ID_ALLOWDELETIONS		 22
+	#define PROPERTY_ID_GROUP_NAME    		 23
 	#define PROPERTY_ID_NAVIGATION			 24
 	#define PROPERTY_ID_CYCLE				 25
 	#define PROPERTY_ID_HIDDEN_VALUE		 26
Index: extensions/source/propctrlr/formmetadata.cxx
===================================================================
RCS file: /cvs/util/extensions/source/propctrlr/formmetadata.cxx,v
retrieving revision 1.47.18.1
diff -u -p -r1.47.18.1 formmetadata.cxx
--- extensions/source/propctrlr/formmetadata.cxx	11 Jan 2008 08:23:04 -0000	1.47.18.1
+++ extensions/source/propctrlr/formmetadata.cxx	29 Mar 2008 19:39:04 -0000
@@ -154,6 +154,7 @@ namespace pcr
         DEF_INFO_?( propname and id,   resoure id,         help id,           flags ),
         */
         DEF_INFO_3( NAME,              NAME,               NAME,              FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
+        DEF_INFO_3( GROUP_NAME,        GROUP_NAME,         GROUP_NAME,        FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
         DEF_INFO_2( TITLE,             TITLE,              TITLE,             FORM_VISIBLE, DIALOG_VISIBLE ),
         DEF_INFO_3( LABEL,             LABEL,              LABEL,             FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
         DEF_INFO_2( CONTROLLABEL,      LABELCONTROL,       CONTROLLABEL,      FORM_VISIBLE, COMPOSEABLE ),
Index: extensions/source/propctrlr/formstrings.hxx
===================================================================
RCS file: /cvs/util/extensions/source/propctrlr/formstrings.hxx,v
retrieving revision 1.38
diff -u -p -r1.38 formstrings.hxx
--- extensions/source/propctrlr/formstrings.hxx	27 Nov 2007 11:53:16 -0000	1.38
+++ extensions/source/propctrlr/formstrings.hxx	29 Mar 2008 19:39:05 -0000
@@ -57,6 +57,7 @@ namespace pcr
 	PCR_CONSTASCII_STRING( PROPERTY_TABINDEX,				"TabIndex");
 	PCR_CONSTASCII_STRING( PROPERTY_TAG,					"Tag");
 	PCR_CONSTASCII_STRING( PROPERTY_NAME,					"Name");
+	PCR_CONSTASCII_STRING( PROPERTY_GROUP_NAME,             "GroupName");
 	PCR_CONSTASCII_STRING( PROPERTY_VALUE,					"Value");
 	PCR_CONSTASCII_STRING( PROPERTY_TEXT,					"Text");
 	PCR_CONSTASCII_STRING( PROPERTY_NAVIGATION,				"NavigationBarMode");
Index: extensions/source/propctrlr/formresid.hrc
===================================================================
RCS file: /cvs/util/extensions/source/propctrlr/formresid.hrc,v
retrieving revision 1.36
diff -u -p -r1.36 formresid.hrc
--- extensions/source/propctrlr/formresid.hrc	27 Nov 2007 11:52:56 -0000	1.36
+++ extensions/source/propctrlr/formresid.hrc	29 Mar 2008 19:39:05 -0000
@@ -152,7 +152,7 @@
 #define RID_STR_TAG							( RID_FORMBROWSER_START + 116 )
 #define RID_STR_HELPTEXT					( RID_FORMBROWSER_START + 117 )
 #define RID_STR_HELPURL						( RID_FORMBROWSER_START + 118 )
-    // FREE
+#define RID_STR_GROUP_NAME                  ( RID_FORMBROWSER_START + 119 )
 #define RID_STR_UNCHECKEDREFVALUE           ( RID_FORMBROWSER_START + 120 )
 #define RID_STR_CURSOR_TYPE					( RID_FORMBROWSER_START + 121 )
     // FREE
Index: extensions/source/propctrlr/formres.src
===================================================================
RCS file: /cvs/util/extensions/source/propctrlr/formres.src,v
retrieving revision 1.81
diff -u -p -r1.81 formres.src
--- extensions/source/propctrlr/formres.src	27 Nov 2007 11:52:35 -0000	1.81
+++ extensions/source/propctrlr/formres.src	29 Mar 2008 19:39:05 -0000
@@ -235,6 +235,10 @@ String RID_STR_NAME
 {
 	Text [ en-US ] = "Name" ;
 };
+String RID_STR_GROUP_NAME
+{
+	Text [ en-US ] = "Group Name" ;
+};
 String RID_STR_TABINDEX
 {
 	Text [ en-US ] = "Tab order" ;
Index: forms/source/component/GroupManager.hxx
===================================================================
RCS file: /cvs/gsl/forms/source/component/GroupManager.hxx,v
retrieving revision 1.11
diff -u -p -r1.11 GroupManager.hxx
--- forms/source/component/GroupManager.hxx	12 Oct 2006 11:12:12 -0000	1.11
+++ forms/source/component/GroupManager.hxx	29 Mar 2008 19:39:05 -0000
@@ -248,6 +248,8 @@ public:
 	void getGroup(sal_Int32 nGroup, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel> >& _rGroup, ::rtl::OUString& Name);
 	void getGroupByName(const ::rtl::OUString& Name, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel> >& _rGroup);
 	::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel> > getControlModels();
+
+	static void GetGroupName( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> xComponent, ::rtl::OUString& sGroupName );
 };
 
 
Index: forms/source/component/GroupManager.cxx
===================================================================
RCS file: /cvs/gsl/forms/source/component/GroupManager.cxx,v
retrieving revision 1.17
diff -u -p -r1.17 GroupManager.cxx
--- forms/source/component/GroupManager.cxx	16 Sep 2006 23:51:13 -0000	1.17
+++ forms/source/component/GroupManager.cxx	29 Mar 2008 19:39:05 -0000
@@ -155,7 +155,7 @@ OGroupComp::OGroupComp(const Reference<X
 			// Indices kleiner 0 werden wie 0 behandelt
 			m_nTabIndex = Max(getINT16(m_xComponent->getPropertyValue( PROPERTY_TABINDEX )) , sal_Int16(0));
 
-		m_xComponent->getPropertyValue( PROPERTY_NAME ) >>= m_aName;
+		OGroupManager::GetGroupName (m_xComponent, m_aName);
 	}
 }
 
@@ -342,7 +342,8 @@ void OGroupManager::removeFromGroupMap(c
 		aFind->second.RemoveComponent( _xSet );
 
 		// Wenn Anzahl der Gruppenelemente == 1 ist, Gruppe deaktivieren
-		if ( aFind->second.Count() == 1 )
+		int nCount = aFind->second.Count();
+		if ( nCount == 1 || nCount == 0 )
 		{
 			OActiveGroups::iterator aActiveFind = ::std::find(
                 m_aActiveGroupMap.begin(),
@@ -353,7 +354,7 @@ void OGroupManager::removeFromGroupMap(c
             {
                 // the group is active. Deactivate it if the remaining component
                 // is *no* radio button
-                if ( !isRadioButton( aFind->second.GetObject( 0 ) ) )
+                if ( nCount == 0 || !isRadioButton( aFind->second.GetObject( 0 ) ) )
 				    m_aActiveGroupMap.erase( aActiveFind );
             }
 		}
@@ -362,6 +363,8 @@ void OGroupManager::removeFromGroupMap(c
 
 	// Bei Component als PropertyChangeListener abmelden
 	_xSet->removePropertyChangeListener( PROPERTY_NAME, this );
+	if (hasProperty(PROPERTY_GROUP_NAME, _xSet))
+		_xSet->removePropertyChangeListener( PROPERTY_GROUP_NAME, this );
 	if (hasProperty(PROPERTY_TABINDEX, _xSet))
 		_xSet->removePropertyChangeListener( PROPERTY_TABINDEX, this );
 }
@@ -369,13 +372,25 @@ void OGroupManager::removeFromGroupMap(c
 void SAL_CALL OGroupManager::propertyChange(const PropertyChangeEvent& evt) throw ( ::com::sun::star::uno::RuntimeException)
 {
 	Reference<XPropertySet>  xSet(evt.Source, UNO_QUERY);
-
 	// Component aus Gruppe entfernen
 	::rtl::OUString		sGroupName;
-	if (evt.PropertyName == PROPERTY_NAME)
+	if (hasProperty( PROPERTY_GROUP_NAME, xSet ))
+		xSet->getPropertyValue( PROPERTY_GROUP_NAME ) >>= sGroupName;
+	if (evt.PropertyName == PROPERTY_NAME) {
+		if (sGroupName.getLength() > 0)
+			return; // group hasn't changed; ignore this name change.
+		// no GroupName; use Name as GroupNme
+		evt.OldValue >>= sGroupName;
+	}
+	else if (evt.PropertyName == PROPERTY_GROUP_NAME) {
 		evt.OldValue >>= sGroupName;
+		if (sGroupName.getLength() == 0) {
+			// No prior GroupName; fallback to Nme
+			xSet->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+		}
+	}
 	else
-		xSet->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+		GetGroupName (xSet, sGroupName);
 
 	removeFromGroupMap(sGroupName,xSet);
 
@@ -459,7 +474,7 @@ void OGroupManager::InsertElement( const
 
 	// Component in Gruppe aufnehmen
 	::rtl::OUString sGroupName;
-	xSet->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+	GetGroupName (xSet, sGroupName);
 
 	OGroupArr::iterator aFind = m_aGroupArr.find(sGroupName);
 
@@ -497,6 +512,8 @@ void OGroupManager::InsertElement( const
 
 	// Bei Component als PropertyChangeListener anmelden
 	xSet->addPropertyChangeListener( PROPERTY_NAME, this );
+	if (hasProperty(PROPERTY_GROUP_NAME, xSet))
+		xSet->addPropertyChangeListener( PROPERTY_GROUP_NAME, this );
 
     // Tabindex muss nicht jeder unterstuetzen
 	if (hasProperty(PROPERTY_TABINDEX, xSet))
@@ -514,11 +531,22 @@ void OGroupManager::RemoveElement( const
 
 	// Component aus Gruppe entfernen
 	::rtl::OUString		sGroupName;
-	xSet->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+	GetGroupName (xSet, sGroupName);
 
 	removeFromGroupMap(sGroupName,xSet);
 }
 
+void OGroupManager::GetGroupName (::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> xComponent, ::rtl::OUString& sGroupName)
+{
+    if (hasProperty( PROPERTY_GROUP_NAME, xComponent )) {
+        xComponent->getPropertyValue( PROPERTY_GROUP_NAME ) >>= sGroupName;
+        if (sGroupName.getLength() == 0)
+            xComponent->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+    }
+    else
+        xComponent->getPropertyValue( PROPERTY_NAME ) >>= sGroupName;
+}
+
 //.........................................................................
 }	// namespace frm
 //.........................................................................
Index: forms/source/component/RadioButton.hxx
===================================================================
RCS file: /cvs/gsl/forms/source/component/RadioButton.hxx,v
retrieving revision 1.11
diff -u -p -r1.11 RadioButton.hxx
--- forms/source/component/RadioButton.hxx	9 Mar 2007 13:31:41 -0000	1.11
+++ forms/source/component/RadioButton.hxx	29 Mar 2008 19:39:05 -0000
@@ -49,6 +49,9 @@ namespace frm
 //==================================================================
 class ORadioButtonModel		:public OReferenceValueComponent
 {
+protected:
+	::rtl::OUString m_sGroupName;
+
 public:
 	DECLARE_DEFAULT_LEAF_XTOR( ORadioButtonModel );
 
@@ -57,6 +60,10 @@ public:
 	virtual StringSequence SAL_CALL	getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
 
 	// OPropertySetHelper
+	virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle) const;
+	virtual sal_Bool SAL_CALL convertFastPropertyValue(
+				::com::sun::star::uno::Any& _rConvertedValue, ::com::sun::star::uno::Any& _rOldValue, sal_Int32 _nHandle, const ::com::sun::star::uno::Any& _rValue )
+				throw (::com::sun::star::lang::IllegalArgumentException);
 	virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue )
 				throw (::com::sun::star::uno::Exception);
 
Index: forms/source/component/RadioButton.cxx
===================================================================
RCS file: /cvs/gsl/forms/source/component/RadioButton.cxx,v
retrieving revision 1.21
diff -u -p -r1.21 RadioButton.cxx
--- forms/source/component/RadioButton.cxx	9 Mar 2007 13:31:25 -0000	1.21
+++ forms/source/component/RadioButton.cxx	29 Mar 2008 19:39:05 -0000
@@ -39,6 +39,9 @@
 #ifndef _FORMS_RADIOBUTTON_HXX_
 #include "RadioButton.hxx"
 #endif
+#ifndef _FRM_GROUPMANAGER_HXX_
+#include "GroupManager.hxx"
+#endif
 #ifndef _FRM_PROPERTY_HXX_
 #include "property.hxx"
 #endif
@@ -150,6 +153,7 @@ ORadioButtonModel::ORadioButtonModel(con
 //------------------------------------------------------------------
 ORadioButtonModel::ORadioButtonModel( const ORadioButtonModel* _pOriginal, const Reference<XMultiServiceFactory>& _rxFactory )
 	:OReferenceValueComponent( _pOriginal, _rxFactory )
+	,m_sGroupName( _pOriginal->m_sGroupName )
 {
 	DBG_CTOR( ORadioButtonModel, NULL );
 }
@@ -192,7 +196,7 @@ StringSequence SAL_CALL	ORadioButtonMode
 void ORadioButtonModel::SetSiblingPropsTo(const ::rtl::OUString& rPropName, const Any& rValue)
 {
 	// mein Name
-	::rtl::OUString sMyName(m_aName);
+	::rtl::OUString sMyGroup( m_sGroupName.getLength() > 0 ? m_sGroupName : m_aName);
 
 	// meine Siblings durchiterieren
 	Reference<XIndexAccess> xIndexAccess(getParent(), UNO_QUERY);
@@ -200,8 +204,9 @@ void ORadioButtonModel::SetSiblingPropsT
 	{
 		Reference<XPropertySet> xMyProps;
 		query_interface(static_cast<XWeak*>(this), xMyProps);
-		::rtl::OUString	sCurrentName;
-		for (sal_Int32 i=0; i<xIndexAccess->getCount(); ++i)
+		::rtl::OUString	sCurrentGroup;
+		int nNumSiblings = xIndexAccess->getCount();
+		for (sal_Int32 i=0; i<nNumSiblings; ++i)
 		{
 			Reference<XPropertySet>	xSiblingProperties(*(InterfaceRef*)xIndexAccess->getByIndex(i).getValue(), UNO_QUERY);
 			if (!xSiblingProperties.is())
@@ -218,34 +223,64 @@ void ORadioButtonModel::SetSiblingPropsT
 				continue;
 
 			// das 'zur selben Gruppe gehoeren' wird am Namen festgemacht
-			xSiblingProperties->getPropertyValue(PROPERTY_NAME) >>= sCurrentName;
-			if (sCurrentName == sMyName)
+			OGroupManager::GetGroupName( xSiblingProperties, sCurrentGroup );
+			if (sCurrentGroup == sMyGroup)
 				xSiblingProperties->setPropertyValue(rPropName, rValue);
 		}
 	}
 }
 
 //------------------------------------------------------------------------------
-void ORadioButtonModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue) throw (Exception)
+void ORadioButtonModel::getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const
 {
-	OReferenceValueComponent::setFastPropertyValue_NoBroadcast( nHandle, rValue );
+	switch (nHandle)
+	{
+		case PROPERTY_ID_GROUP_NAME:
+			rValue <<= m_sGroupName;
+			break;
+		default:
+			OReferenceValueComponent::getFastPropertyValue(rValue, nHandle);
+			break;
+	}
+}
 
-	// if the label control changed ...
-	if (nHandle == PROPERTY_ID_CONTROLLABEL)
-	{	// ... forward this to our siblings
-		SetSiblingPropsTo(PROPERTY_CONTROLLABEL, rValue);
+sal_Bool ORadioButtonModel::convertFastPropertyValue(
+                Any& _rConvertedValue, Any& _rOldValue,
+                sal_Int32 _nHandle,
+                const Any& _rValue)
+        throw (com::sun::star::lang::IllegalArgumentException)
+{
+	sal_Bool bModified(sal_False);
+	switch (_nHandle)
+	{
+    case PROPERTY_ID_GROUP_NAME:
+			bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_sGroupName);
+      break;
+		default:
+			bModified = OReferenceValueComponent::convertFastPropertyValue(_rConvertedValue, _rOldValue, _nHandle, _rValue);
+      break;
 	}
+	return bModified;
+}
 
+void ORadioButtonModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue) throw (Exception)
+{
+	if (nHandle != PROPERTY_ID_GROUP_NAME)
+		OReferenceValueComponent::setFastPropertyValue_NoBroadcast( nHandle, rValue );
+	switch (nHandle) {
+	case PROPERTY_ID_CONTROLLABEL:
+		SetSiblingPropsTo(PROPERTY_CONTROLLABEL, rValue);
+		break;
 	// wenn sich die ControlSource-Eigenschaft geaendert hat ...
-	if (nHandle == PROPERTY_ID_CONTROLSOURCE)
-	{	// ... muss ich allen meinen Siblings, die in der selben RadioButton-Gruppe sind wie ich, auch die
+	case PROPERTY_ID_CONTROLSOURCE:
+		// ... muss ich allen meinen Siblings, die in der selben RadioButton-Gruppe sind wie ich, auch die
 		// neue ControlSource mitgeben
 		SetSiblingPropsTo(PROPERTY_CONTROLSOURCE, rValue);
-	}
-
+		break;
 	// die andere Richtung : wenn sich mein Name aendert ...
-	if (nHandle == PROPERTY_ID_NAME)
-	{
+	case PROPERTY_ID_GROUP_NAME:
+		rValue >>= m_sGroupName;
+	case PROPERTY_ID_NAME: {
 		// ... muss ich testen, ob ich Siblings mit dem selben Namen habe, damit ich deren ControlSource uebernehmen kann
 		Reference<XIndexAccess> xIndexAccess(getParent(), UNO_QUERY);
 		if (xIndexAccess.is())
@@ -271,7 +306,7 @@ void ORadioButtonModel::setFastPropertyV
 					// nur Radio-Buttons
 					continue;
 
-				xSiblingProperties->getPropertyValue(PROPERTY_NAME) >>= sName;
+				xSiblingProperties->getPropertyValue(nHandle == PROPERTY_ID_NAME ? PROPERTY_NAME : PROPERTY_GROUP_NAME) >>= sName;
 				// Control, das zur gleichen Gruppe gehoert ?
 				if (rValue == sName)
 				{
@@ -280,10 +315,9 @@ void ORadioButtonModel::setFastPropertyV
 				}
 			}
 		}
+		break;
 	}
-
-	if (nHandle == PROPERTY_ID_DEFAULTCHECKED)
-	{
+	case PROPERTY_ID_DEFAULTCHECKED: {
 		sal_Int16 nValue;
 		rValue >>= nValue;
 		if (1 == nValue)
@@ -294,14 +328,20 @@ void ORadioButtonModel::setFastPropertyV
 			aZero <<= nValue;
 			SetSiblingPropsTo(PROPERTY_DEFAULTCHECKED, aZero);
 		}
+		break;
+	}
+	default:  
+		// OReferenceValueComponent::setFastPropertyValue_NoBroadcast( nHandle, rValue );
+		break;
 	}
 }
 
 //------------------------------------------------------------------------------
 void ORadioButtonModel::describeFixedProperties( Sequence< Property >& _rProps ) const
 {
-	BEGIN_DESCRIBE_PROPERTIES( 1, OReferenceValueComponent )
+	BEGIN_DESCRIBE_PROPERTIES( 2, OReferenceValueComponent )
 		DECL_PROP1(TABINDEX,			sal_Int16,					BOUND);
+		DECL_PROP1(GROUP_NAME,          ::rtl::OUString,            BOUND);
 	END_DESCRIBE_PROPERTIES();
 }
 
Index: forms/source/inc/frm_strings.hxx
===================================================================
RCS file: /cvs/gsl/forms/source/inc/frm_strings.hxx,v
retrieving revision 1.15.14.1
diff -u -p -r1.15.14.1 frm_strings.hxx
--- forms/source/inc/frm_strings.hxx	18 Jan 2008 15:11:23 -0000	1.15.14.1
+++ forms/source/inc/frm_strings.hxx	29 Mar 2008 19:39:05 -0000
@@ -109,6 +109,7 @@ namespace frm
     FORMS_CONSTASCII_STRING( PROPERTY_TABINDEX,                 "TabIndex" );
     FORMS_CONSTASCII_STRING( PROPERTY_TAG,                      "Tag" );
     FORMS_CONSTASCII_STRING( PROPERTY_NAME,                     "Name" );
+    FORMS_CONSTASCII_STRING( PROPERTY_GROUP_NAME,               "GroupName" );
     FORMS_CONSTASCII_STRING( PROPERTY_CLASSID,                  "ClassId" );
     FORMS_CONSTASCII_STRING( PROPERTY_FETCHSIZE,                "FetchSize" );
     FORMS_CONSTASCII_STRING( PROPERTY_VALUE,                    "Value" );
Index: forms/source/inc/property.hrc
===================================================================
RCS file: /cvs/gsl/forms/source/inc/property.hrc,v
retrieving revision 1.20
diff -u -p -r1.20 property.hrc
--- forms/source/inc/property.hrc	31 Jan 2006 18:36:51 -0000	1.20
+++ forms/source/inc/property.hrc	29 Mar 2008 19:39:05 -0000
@@ -65,7 +65,7 @@ namespace frm
 #define PROPERTY_ID_ALLOWEDITS          (PROPERTY_ID_START + 16)
 #define PROPERTY_ID_ALLOWDELETIONS      (PROPERTY_ID_START + 17)
 #define PROPERTY_ID_NATIVE_LOOK         (PROPERTY_ID_START + 18)
-    // free
+#define PROPERTY_ID_GROUP_NAME          (PROPERTY_ID_START + 19)
     // free
     // free
     // free

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to