Commits

Anonymous committed 0a105cf Merge

accfixes3: merged tag-revision for DEV300_m104

Comments (0)

Files changed (153)

 7dbaa615ad894cfd4f9611e82783250bd0a3016d DEV300_m102
 1bdfec44e7ce902365aa7d9cb632f0adeb86262e DEV300_m103
 21b3740610dc90f5298f3bea070153020f3db8b8 DEV300_m104
+83ed9a2bebbf21cd27c4b5d8bc5ab4f184371b1c accfixes2

accessibility/inc/accessibility/extended/accessiblelistbox.hxx

 #include <vcl/vclevent.hxx>
 #include <toolkit/awt/vclxaccessiblecomponent.hxx>
 
+#include <map>
 
 // class AccessibleListBox -----------------------------------------------
 
 class SvTreeListBox;
-
+class SvLBoxEntry;
 //........................................................................
 namespace accessibility
 {
 		virtual void	FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
 
 		SvTreeListBox*	getListBox() const;
+		
+		void 			RemoveChildEntries(SvLBoxEntry*);
 
 	public:
 		/** OAccessibleBase needs a valid view
 		sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
 		::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
 		void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+private:
+
+	typedef std::map< SvLBoxEntry*, ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > MAP_ENTRY;
+	MAP_ENTRY m_mapEntry;
+
+    ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xFocusedChild; 	
 	};
 
 //........................................................................

accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx

 		/** The treelistbox control */
 		SvTreeListBox*						m_pListBox;
 		::std::deque< sal_Int32 >			m_aEntryPath;
+		SvLBoxEntry* 						m_pSvLBoxEntry;	// IA2 CWS. Needed for focused item...
+		
 
 	protected:
         /// client id in the AccessibleEventNotifier queue
 		Rectangle				GetBoundingBoxOnScreen() throw ( ::com::sun::star::lang::DisposedException );
     	void 					EnsureIsAlive() const throw ( ::com::sun::star::lang::DisposedException );
 
+		void	NotifyAccessibleEvent( sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue );
+
 	protected:
 		virtual ~AccessibleListBoxEntry();
 
 		AccessibleListBoxEntry(	SvTreeListBox& _rListBox, SvLBoxEntry* _pEntry,
 								const ::com::sun::star::uno::Reference<
 									::com::sun::star::accessibility::XAccessible >& _xParent );
+									
+		SvLBoxEntry* GetSvLBoxEntry() const { return m_pSvLBoxEntry; }
+									
 
 	protected:
 		// XTypeProvider

accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx

 {
 private:
 	SvHeaderTabListBox*		m_pTabListBox;
+	
+	::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >  m_xCurChild;
 
 	void					ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
 	DECL_LINK(      		WindowEventListener, VclSimpleEvent* );

accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx

 		virtual Rectangle		GetDropDownPosSizePixel( ) const = 0;
 		virtual Rectangle		GetBoundingRectangle( sal_uInt16 nItem ) const = 0;
 		virtual Rectangle		GetWindowExtentsRelative( Window* pRelativeWindow ) = 0;
-		virtual sal_Bool        	IsActive() const = 0;
-		virtual sal_Bool			IsEntryVisible( sal_uInt16 nPos ) const = 0;
-		virtual sal_uInt16			GetDisplayLineCount() const = 0;
+		virtual sal_Bool        IsActive() const = 0;
+		virtual sal_Bool        IsEnabled() const = 0;
+		virtual sal_Bool		IsEntryVisible( sal_uInt16 nPos ) const = 0;
+		virtual sal_uInt16		GetDisplayLineCount() const = 0;
 		virtual void            GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines ) const = 0;
 		virtual WinBits         GetStyle() const = 0;
-		virtual sal_Bool            IsMultiSelectionEnabled() const = 0;
-		virtual sal_uInt16			GetTopEntry() const = 0;
-		virtual sal_Bool			IsEntryPosSelected( sal_uInt16 nPos ) const = 0;
-		virtual sal_uInt16          GetEntryCount() const = 0;
+		virtual sal_Bool        IsMultiSelectionEnabled() const = 0;
+		virtual sal_uInt16		GetTopEntry() const = 0;
+		virtual sal_Bool		IsEntryPosSelected( sal_uInt16 nPos ) const = 0;
+		virtual sal_uInt16      GetEntryCount() const = 0;
 		virtual void			Select() = 0;
 		virtual void			SelectEntryPos( sal_uInt16 nPos, sal_Bool bSelect = sal_True ) = 0;
-		virtual sal_uInt16			GetSelectEntryCount() const = 0;
+		virtual sal_uInt16		GetSelectEntryCount() const = 0;
 		virtual void			SetNoSelection() = 0;
-		virtual sal_uInt16			GetSelectEntryPos( sal_uInt16 nSelIndex = 0 ) const = 0;
-		virtual sal_Bool            IsInDropDown() const = 0;
+		virtual sal_uInt16		GetSelectEntryPos( sal_uInt16 nSelIndex = 0 ) const = 0;
+		virtual sal_Bool        IsInDropDown() const = 0;
         virtual Rectangle       GetEntryCharacterBounds( const sal_Int32 _nEntryPos, const sal_Int32 _nCharacterIndex ) const = 0;
         virtual long            GetIndexForPoint( const Point& rPoint, sal_uInt16& nPos ) const = 0;
-        virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >
-                                GetClipboard() = 0;
+        virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetClipboard() = 0;
 	};
 }
 #endif // ACCESSIBILITY_HELPER_COMBOLISTBOXHELPER_HXX

accessibility/inc/accessibility/helper/accessiblestrings.hrc

 // Accessible Action Id's ------------------------------------------------------
 
 #define RID_STR_ACC_ACTION_CLICK			( RID_TK_ACC_START +    0 )
-#define RID_STR_ACC_ACTION_TOGGLEPOPUP		( RID_TK_ACC_START +    1 )
+#define RID_STR_ACC_ACTION_TOGGLEPOPUP			( RID_TK_ACC_START +    1 )
 #define RID_STR_ACC_ACTION_SELECT			( RID_TK_ACC_START +    2 )
 #define RID_STR_ACC_ACTION_INCLINE			( RID_TK_ACC_START +    3 )
 #define RID_STR_ACC_ACTION_DECLINE			( RID_TK_ACC_START +    4 )
 #define RID_STR_ACC_ACTION_DECBLOCK			( RID_TK_ACC_START +    6 )
 
 
-#define RID_STR_ACC_NAME_BROWSEBUTTON		( RID_TK_ACC_START + 100 )
-#define RID_STR_ACC_DESC_PANELDECL_TABBAR   ( RID_TK_ACC_START + 101 )
+#define	RID_STR_ACC_ACTION_CHECK			( RID_TK_ACC_START +    11 )
+#define	RID_STR_ACC_ACTION_UNCHECK			( RID_TK_ACC_START +    12 )
+#define RID_STR_ACC_SCROLLBAR_NAME_VERTICAL		( RID_TK_ACC_START +    14 )
+#define RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL		( RID_TK_ACC_START +    15 )
+#define RID_STR_ACC_NAME_BROWSEBUTTON			( RID_TK_ACC_START + 100 )
+#define RID_STR_ACC_DESC_PANELDECL_TABBAR   		( RID_TK_ACC_START + 101 )
 
 // -----------------------------------------------------------------------------
 

accessibility/inc/accessibility/helper/listboxhelper.hxx

 		return m_aComboListBox.IsActive();
 	}
 	// -----------------------------------------------------------------------------
+    virtual sal_Bool        	IsEnabled() const
+	{
+		return m_aComboListBox.IsEnabled();
+	}
+	// -----------------------------------------------------------------------------
 	virtual sal_Bool			IsEntryVisible( sal_uInt16 nPos ) const
 	{
 		sal_uInt16 nTopEntry = m_aComboListBox.GetTopEntry();

accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx

     virtual sal_Bool		IsHighlighted();
     sal_Bool                IsChildHighlighted();
 
+	virtual sal_Bool 		IsMenuHideDisabledEntries();
+
 	void					SelectChild( sal_Int32 i );
 	void					DeSelectAll();
 	sal_Bool				IsChildSelected( sal_Int32 i );

accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx

     ::rtl::OUString			GetAccessibleName();
     void					SetItemText( const ::rtl::OUString& sItemText );
     ::rtl::OUString			GetItemText();
+	
+	virtual sal_Bool 		IsMenuHideDisabledEntries();
 
     virtual void			FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
 

accessibility/inc/accessibility/standard/vclxaccessiblebutton.hxx

 
 #include <accessibility/standard/vclxaccessibletextcomponent.hxx>
 
-#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_ACTION_HPP_
 #include <com/sun/star/accessibility/XAccessibleAction.hpp>
-#endif
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
-
-#ifndef _CPPUHELPER_IMPLBASE2_HXX
 #include <cppuhelper/implbase2.hxx>
-#endif
 
 
 //	----------------------------------------------------

accessibility/inc/accessibility/standard/vclxaccessiblecheckbox.hxx

 
 #include <accessibility/standard/vclxaccessibletextcomponent.hxx>
 
-#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_ACTION_HPP_
 #include <com/sun/star/accessibility/XAccessibleAction.hpp>
-#endif
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
-
-#ifndef _CPPUHELPER_IMPLBASE2_HXX
 #include <cppuhelper/implbase2.hxx>
-#endif
 
 
 //	----------------------------------------------------

accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx

 	// XAccessibleContext
 	virtual sal_Int32 SAL_CALL getAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
-	virtual sal_Int16 SAL_CALL getAccessibleRole(  ) throw (::com::sun::star::uno::RuntimeException);
 
 	// XAccessibleAction
 	virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException);

accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx

 	::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >	m_xParentContext;
 
 private:
-	/** notifies all listeners that this object has changed
-		@param	_nEventId
-			is the event id
-		@param	_aOldValue
-			is the old value
-		@param	_aNewValue
-			is the new value
-	*/
-	void 					NotifyAccessibleEvent(	sal_Int16 _nEventId,
-													const ::com::sun::star::uno::Any& _aOldValue,
-													const ::com::sun::star::uno::Any& _aNewValue );
 
 protected:
 	virtual ~VCLXAccessibleListItem();
 							sal_Int32 _nIndexInParent,
 							const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
 
+	void 					NotifyAccessibleEvent(	sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue );
 
 	inline sal_Bool			IsSelected() const { return m_bSelected; }
 	void					SetSelected( sal_Bool _bSelected );

accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx

 	virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
 	virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+	// XAccessibleAction
+	virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
 };
 
 #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX

accessibility/inc/accessibility/standard/vclxaccessiblemenuitem.hxx

 #endif
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
 
-#ifndef _CPPUHELPER_IMPLBASE3_HXX
 #include <cppuhelper/implbase3.hxx>
-#endif
 #include <comphelper/accessibletexthelper.hxx>
 
 

accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx

 #endif
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
 
-#ifndef _CPPUHELPER_IMPLBASE2_HXX
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
 #include <cppuhelper/implbase2.hxx>
 #endif
 

accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx

 	virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
 	virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue(  ) throw (::com::sun::star::uno::RuntimeException);
 	virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue(  ) throw (::com::sun::star::uno::RuntimeException);
+
+	// XAccessibleContext
+	::rtl::OUString SAL_CALL getAccessibleName(  ) throw (::com::sun::star::uno::RuntimeException);
+
 };
 
 #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX

accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx

 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
-#ifndef _CPPUHELPER_IMPLBASE4_HXX
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
 #include <cppuhelper/implbase4.hxx>
 #endif
 #include <comphelper/accessibletexthelper.hxx>

accessibility/source/extended/accessiblelistbox.cxx

                     // modified selection.  The active descendant event is
                     // send after that so that the receiving AT has time to
                     // read the text or name of the active child.
-                    NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
-					if ( getListBox() && getListBox()->HasFocus() )
+//                    NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+					OSL_ASSERT(0 && "Debug: Treelist shouldn't use VCLEVENT_LISTBOX_SELECT");
+				}
+				case VCLEVENT_LISTBOX_TREESELECT:
+					{
+						if ( getListBox() && getListBox()->HasFocus() )
+						{
+							AccessibleListBoxEntry* pEntry =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get());
+							if (pEntry)
+							{
+								pEntry->NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+							}
+						}
+					}
+					break;
+				case VCLEVENT_LISTBOX_TREEFOCUS:
+					{
+						SvTreeListBox* pBox = getListBox();
+						sal_Bool bNeedFocus = sal_False;
+						if (pBox)
+						{
+							Window* pParent = ((Window*)pBox)->GetParent();
+							if (pParent && pParent->GetType() == WINDOW_FLOATINGWINDOW)
+							{
+								// MT: ImplGetAppSVData shouldn't be exported from VCL.
+								// In which scenario is this needed?
+								// If needed, we need to find an other solution
+								/*
+								ImplSVData* pSVData = ImplGetAppSVData();
+								if (pSVData && pSVData->maWinData.mpFirstFloat == (FloatingWindow*)pParent)
+									bNeedFocus = sal_True;
+								*/
+							}	
+						}
+						if( pBox && (pBox->HasFocus() || bNeedFocus) )
+						{
+							uno::Any aOldValue, aNewValue;
+							SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+							if ( pEntry )
+							{
+								AccessibleListBoxEntry* pEntryFocus =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get());
+								if (pEntryFocus && pEntryFocus->GetSvLBoxEntry() == pEntry)
+								{
+									aOldValue <<= uno::Any();
+									aNewValue <<= m_xFocusedChild;
+									NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+									return ;
+								}
+
+								aOldValue <<= m_xFocusedChild;
+
+								MAP_ENTRY::iterator mi = m_mapEntry.find(pEntry);
+								if(mi != m_mapEntry.end())
+								{
+									OSL_ASSERT(mi->second.get() != NULL);
+									m_xFocusedChild = mi->second;
+								}
+								else
+								{
+									AccessibleListBoxEntry *pEntNew = new AccessibleListBoxEntry( *getListBox(), pEntry, NULL );
+									m_xFocusedChild = pEntNew;
+									m_mapEntry.insert(MAP_ENTRY::value_type(pEntry,pEntNew));
+								}
+								
+								aNewValue <<= m_xFocusedChild;
+								NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+							}
+							else
+							{
+								aOldValue <<= uno::Any();
+								aNewValue <<= AccessibleStateType::FOCUSED;
+								NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+							}
+						}			
+					}
+					break;
+				case VCLEVENT_LISTBOX_ITEMREMOVED:
 					{
 						SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
 						if ( pEntry )
 						{
-							Reference< XAccessible > xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
-							uno::Any aOldValue, aNewValue;
-							aNewValue <<= xChild;
-							NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+							RemoveChildEntries(pEntry);
 						}
+						else
+						{
+							// NULL means Clear()
+							MAP_ENTRY::iterator mi = m_mapEntry.begin();
+							for ( ; mi != m_mapEntry.end() ; ++mi)
+							{
+								uno::Any aNewValue;
+								uno::Any aOldValue;
+								aOldValue <<= mi->second;							
+								NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+							}
+							m_mapEntry.clear();
+						}
+			
+						
 					}
 					break;
 
                             NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, Any(), aListBoxEntry );
                         }
                     }
-                    break;
                 }
+                break;
                 // <--
-                }
 				default:
 					VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
 			}
 		}
 	}
+	void AccessibleListBox::RemoveChildEntries(SvLBoxEntry* pEntry)
+	{
+		MAP_ENTRY::iterator mi = m_mapEntry.find(pEntry);
+		if ( mi != m_mapEntry.end() )
+		{
+			uno::Any aNewValue;
+			uno::Any aOldValue;
+			aOldValue <<= mi->second;							
+			NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+			m_mapEntry.erase(mi);
+		}
+
+		SvTreeListBox* pBox = getListBox();
+		SvLBoxEntry* pEntryChild = pBox->FirstChild(pEntry);
+		while (pEntryChild)
+		{
+			RemoveChildEntries(pEntryChild);
+			pEntryChild = pBox->NextSibling(pEntryChild);
+		}		
+	}
+
 	// -----------------------------------------------------------------------------
     void AccessibleListBox::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
     {
 	{
 		::osl::MutexGuard aGuard( m_aMutex );
 
+		m_mapEntry.clear();
 		VCLXAccessibleComponent::disposing();
 	    m_xParent = NULL;
 	}

accessibility/source/extended/accessiblelistboxentry.cxx

 		AccessibleListBoxEntry_BASE	( m_aMutex ),
 		ListBoxAccessibleBase( _rListBox ),
 
+		m_pSvLBoxEntry  ( _pEntry ),
         m_nClientId     ( 0 ),
 		m_aParent		( _xParent )
 
         	dispose();
 		}
 	}
+	
+	// IA2 CWS
+	void AccessibleListBoxEntry::NotifyAccessibleEvent( sal_Int16 _nEventId,
+											   	const ::com::sun::star::uno::Any& _aOldValue,
+											   	const ::com::sun::star::uno::Any& _aNewValue )
+	{
+        Reference< uno::XInterface > xSource( *this );
+        AccessibleEventObject aEventObj( xSource, _nEventId, _aNewValue, _aOldValue );
+
+	    if (m_nClientId)
+		    comphelper::AccessibleEventNotifier::addEvent( m_nClientId, aEventObj );
+	}
+	
 
 	// -----------------------------------------------------------------------------
 	Rectangle AccessibleListBoxEntry::GetBoundingBox_Impl() const
 		::osl::MutexGuard aGuard( m_aMutex );
 
 		EnsureIsAlive();
-		return implGetText();
+		::rtl::OUString sRet;
+		sRet = implGetText();
+		// SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+
+
+		// IA2 CWS. Removed for now - only used in Sw/Sd/ScContentLBoxString, they should decide if they need this
+		// if ( pEntry && pEntry->IsMarked())
+		//	sRet = sRet + ::rtl::OUString(TK_RES_STRING(STR_SVT_ACC_LISTENTRY_SELCTED_STATE));
+		
+		return sRet;
 	}
 	// -----------------------------------------------------------------------------
 	Reference< XAccessibleRelationSet > SAL_CALL AccessibleListBoxEntry::getAccessibleRelationSet(  ) throw (RuntimeException)

accessibility/source/extended/accessibletablistboxtable.cxx

 					}
 					break;
 				}
+				case VCLEVENT_WINDOW_GETFOCUS :
+				{
+					uno::Any aOldValue, aNewValue;
+					aNewValue <<= AccessibleStateType::FOCUSED;
+					commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+					break;
+					
+				}
+				case VCLEVENT_WINDOW_LOSEFOCUS :
+				{
+					uno::Any aOldValue, aNewValue;
+					aOldValue <<= AccessibleStateType::FOCUSED;
+					commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+					break;
+				}
+				case VCLEVENT_LISTBOX_TREESELECT:
+					{
+						SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+						if (pEntry)
+						{
+							sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+							Reference< XAccessible > xChild = m_pTabListBox->CreateAccessibleCell( nRow, m_pTabListBox->GetCurrColumn() );
+							TriState eState = STATE_DONTKNOW;
+							if ( m_pTabListBox->IsCellCheckBox( nRow, m_pTabListBox->GetCurrColumn(), eState ) )
+                            {
+                                AccessibleCheckBoxCell* pCell = static_cast< AccessibleCheckBoxCell* >( xChild.get() );
+                                pCell->commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                            }
+                            else
+                            {
+                                AccessibleBrowseBoxTableCell* pCell = static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() );
+                                pCell->commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                            }
+						}
+					}
+					break;
+				case VCLEVENT_LISTBOX_TREEFOCUS:
+					{
+						if ( m_pTabListBox && m_pTabListBox->HasFocus() )
+						{
+							uno::Any aOldValue, aNewValue;
+							SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+							if ( pEntry )
+							{
+								sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+								m_xCurChild = m_pTabListBox->CreateAccessibleCell( nRow, m_pTabListBox->GetCurrColumn() );
+								aNewValue <<= m_xCurChild;
+								commitEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aNewValue ,aOldValue);
+							}
+							else
+							{
+								aNewValue <<= AccessibleStateType::FOCUSED;
+								commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue ,aOldValue);
+							}
+						}
+					}
+					break;
 
                 case VCLEVENT_CHECKBOX_TOGGLE :
                 {

accessibility/source/helper/accessiblestrings.src

 	Text [ en-US ] = "Browse";
 };
 
+String RID_STR_ACC_ACTION_CHECK
+{
+	Text [ en-US ] = "Check";
+};
+String RID_STR_ACC_ACTION_UNCHECK
+{
+	Text [ en-US ] = "Uncheck";
+};
+String RID_STR_ACC_SCROLLBAR_NAME_VERTICAL
+{
+	Text [ en-US ] = "Vertical scroll bar";
+};
+String RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL
+{
+	Text [ en-US ] = "Horizontal scroll bar";
+};
 String RID_STR_ACC_DESC_PANELDECL_TABBAR
 {
     Text [ en-US ] = "Panel Deck Tab Bar";

accessibility/source/helper/characterattributeshelper.cxx

 
 CharacterAttributesHelper::CharacterAttributesHelper( const Font& rFont, sal_Int32 nBackColor, sal_Int32 nColor )
 {
+	// MT: IA2 CWS commented out CharFontCharSet, CharFontFamily, CharFontPitch, CharFontStyleName, CharScaleWidth - any AT interested in this?
+
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharBackColor" ), makeAny( (sal_Int32) nBackColor ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharColor" ), makeAny( (sal_Int32) nColor ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontCharSet" ), makeAny( (sal_Int16) rFont.GetCharSet() ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharStrikeout" ), makeAny( (sal_Int16) rFont.GetStrikeout() ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharUnderline" ), makeAny( (sal_Int16) rFont.GetUnderline() ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharWeight" ), makeAny( (float) rFont.GetWeight() ) ) );
+    m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharPosture" ), makeAny( (sal_Int16)rFont.GetItalic() ) ) );
+	// MT: Introduced with IA2 CWS, but adjustment is not a char attr...
+    // m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "ParaAdjust" ), makeAny( nAjust ) ) );
 }
 
 // -----------------------------------------------------------------------------

accessibility/source/standard/accessiblemenubasecomponent.cxx

 {
 	if ( m_bEnabled != bEnabled )
 	{
+		sal_Int16 nStateType=AccessibleStateType::ENABLED;
+		if (IsMenuHideDisabledEntries())
+		{
+			nStateType = AccessibleStateType::VISIBLE;
+		}
         Any aOldValue[2], aNewValue[2];
 		if ( m_bEnabled )
         {
             aOldValue[0] <<= AccessibleStateType::SENSITIVE;
-            aOldValue[1] <<= AccessibleStateType::ENABLED;
+            aOldValue[1] <<= nStateType;
         }
 		else
         {
-            aNewValue[0] <<= AccessibleStateType::ENABLED;
+            aNewValue[0] <<= nStateType;
             aNewValue[1] <<= AccessibleStateType::SENSITIVE;
         }
 		m_bEnabled = bEnabled;
 }
 
 // -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsMenuHideDisabledEntries() 
+{
+	return sal_False;
+}
+

accessibility/source/standard/accessiblemenuitemcomponent.cxx

 	if ( m_pParent )
         bVisible = m_pParent->IsItemPosVisible( m_nItemPos );
 
-    return bVisible;
+	return bVisible;
 }
 
 // -----------------------------------------------------------------------------
 		if ( sName.getLength() == 0 )
 			sName = m_pParent->GetItemText( nItemId );
 		sName = OutputDevice::GetNonMnemonicString( sName );
+		
+		// IA2 CWS, MT: Is adding 5 blanks really before the accelname reasonable? And which Platform / Accessibility API does need it this way? ATK has API for this...
+		// Also, IAccessible2 has IAccessibleAction::keyBinding, so I doubt that this is needed.
+		// But if so, it needs to move to the IA2 bridge.
+		/*
+		::rtl::OUString sAccName = m_pParent->GetAccelKey( nItemId ).GetName();
+		if ( sAccName.getLength() )
+		{
+			sName += ::rtl::OUString::createFromAscii("     ");
+	    	sName += aAccelName;
+		}
+		*/
 	}
 
 	return sName;
 
 void OAccessibleMenuItemComponent::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
 {
-	if ( IsEnabled() )
+	sal_Bool bEnabled = IsEnabled();
+	if ( bEnabled )
     {
         rStateSet.AddState( AccessibleStateType::ENABLED );
         rStateSet.AddState( AccessibleStateType::SENSITIVE );
     }
 
     if ( IsVisible() )
-    {
-        rStateSet.AddState( AccessibleStateType::VISIBLE );
-        rStateSet.AddState( AccessibleStateType::SHOWING );
-    }
-
+	{		
+		rStateSet.AddState( AccessibleStateType::SHOWING );
+		if( !IsMenuHideDisabledEntries() || bEnabled )
+			rStateSet.AddState( AccessibleStateType::VISIBLE );
+	}
     rStateSet.AddState( AccessibleStateType::OPAQUE );
 }
 
 }
 
 // -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuItemComponent::IsMenuHideDisabledEntries() 
+{
+	if (m_pParent )
+	{
+		if( m_pParent->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES) 
+		{
+			return sal_True;
+		}
+		// IA2 CWS, but the menus shouldn't have different flags, and even if so, the GetStartedFromMenu shouldn't matter
+		/*
+		else if (m_pParent->GetStartedFromMenu() && 
+				m_pParent->GetStartedFromMenu()->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES)
+		{
+			return sal_True;
+		}
+		*/
+	}
+	return sal_False;
+}

accessibility/source/standard/vclxaccessiblebutton.cxx

 
 		if ( pButton->IsPressed() )
             rStateSet.AddState( AccessibleStateType::PRESSED );
+
+        // IA2 CWS: If the button has a poppup menu,it should has the state EXPANDABLE
+        if( pButton->GetType() == WINDOW_MENUBUTTON )
+        {
+        	rStateSet.AddState( AccessibleStateType::EXPANDABLE );	
+        }
+		if( pButton->GetStyle() & WB_DEFBUTTON )
+		{
+			rStateSet.AddState( AccessibleStateType::DEFAULT );	
+		}
 	}
 }
 
 	OExternalLockGuard aGuard( this );
 
 	::rtl::OUString aName( VCLXAccessibleTextComponent::getAccessibleName() );
+
+	// IA2 CWS: Removed special handling for browse/more buttons. 
+	//          Comment was "the '...' or '<<' or '>>' should be kepted per the requirements from AT"
+	// MT: We did introduce this special handling by intention. 
+	//     As the original text is still what you get via XAccessibleText,
+	//     I think for the accessible name the stuff below is correct.
+
 	sal_Int32 nLength = aName.getLength();
 
 	if ( nLength >= 3 && aName.matchAsciiL( RTL_CONSTASCII_STRINGPARAM("..."), nLength - 3 ) )

accessibility/source/standard/vclxaccessiblecheckbox.cxx

 	if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
         throw IndexOutOfBoundsException();
 
-	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+	//IAccessibility2 Implementation 2009-----
+	//	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+	//-----IAccessibility2 Implementation 2009
+	if(IsChecked())
+		return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_UNCHECK ) );
+	else
+		return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CHECK ) );
 }
 
 // -----------------------------------------------------------------------------

accessibility/source/standard/vclxaccessibledropdowncombobox.cxx

 			NotifyAccessibleEvent(
 			AccessibleEventId::CHILD, aOldValue, aNewValue
 			);
+			break;
             */
-			break;
 		}
 
 		default:

accessibility/source/standard/vclxaccessibleedit.cxx

 }
 
 // -----------------------------------------------------------------------------
-
-sal_Int16 VCLXAccessibleEdit::getAccessibleRole(  ) throw (RuntimeException)
-{
-	OExternalLockGuard aGuard( this );
-
-	sal_Int16 nRole;
-	Edit* pEdit = static_cast< Edit* >( GetWindow() );
-	if ( pEdit && ( ( pEdit->GetStyle() & WB_PASSWORD ) || pEdit->GetEchoChar() ) )
-		nRole = AccessibleRole::PASSWORD_TEXT;
-	else
-		nRole = AccessibleRole::TEXT;
-
-	return nRole;
-}
-
-// -----------------------------------------------------------------------------
 // XAccessibleAction
 // -----------------------------------------------------------------------------
 

accessibility/source/standard/vclxaccessiblelistitem.cxx

 // AF (Oct. 29 2002): Return white as constant background color.  This is an
 // initial implementation and has to be substituted by code that determines
 // the color that is actually used.
-sal_Int32 SAL_CALL VCLXAccessibleListItem::getBackground (void)
-    throw (::com::sun::star::uno::RuntimeException)
+sal_Int32 SAL_CALL VCLXAccessibleListItem::getBackground() throw (::com::sun::star::uno::RuntimeException)
 {
     return COL_WHITE;
 }
-// -----------------------------------------------------------------------------
+

accessibility/source/standard/vclxaccessiblemenu.cxx

 }
 
 // -----------------------------------------------------------------------------
+
+::rtl::OUString VCLXAccessibleMenu::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	OExternalLockGuard aGuard( this );
+
+	if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
+        throw IndexOutOfBoundsException();
+
+	return ::rtl::OUString(  );
+}
+

accessibility/source/standard/vclxaccessiblemenuitem.cxx

 sal_Int16 VCLXAccessibleMenuItem::getAccessibleRole(  ) throw (RuntimeException)
 {
 	OExternalLockGuard aGuard( this );
-
-	return AccessibleRole::MENU_ITEM;
+	// IA2 CWS. MT: We had the aditional roles in UAA for ever, but never used them anywhere.
+	// Looks reasonable, but need to verify in Orca and VoiceOver.
+	sal_Int16 nRole = AccessibleRole::MENU_ITEM;
+	if ( m_pParent )
+	{
+		sal_uInt16 nItemId = m_pParent->GetItemId( m_nItemPos );
+		MenuItemBits nItemBits = m_pParent->GetItemBits(nItemId);
+		if(  nItemBits & MIB_RADIOCHECK)
+			nRole = AccessibleRole::RADIO_MENU_ITEM;
+		else if( nItemBits & MIB_CHECKABLE)
+			nRole = AccessibleRole::CHECK_MENU_ITEM;
+	}
+	return nRole;
 }
 
 // -----------------------------------------------------------------------------
 	if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
         throw IndexOutOfBoundsException();
 
-	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_SELECT ) );
 }
 
 // -----------------------------------------------------------------------------

accessibility/source/standard/vclxaccessibleradiobutton.cxx

 {
     VCLXAccessibleTextComponent::FillAccessibleRelationSet( rRelationSet );
 
+	// IA2 CWS: They commented out everything below. No idea why, so keep it as it is for now.
     RadioButton* pRadioButton = dynamic_cast< RadioButton* >( GetWindow() );
     if ( pRadioButton )
     {
 
 	if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
         throw IndexOutOfBoundsException();
-
-	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_CLICK ) );
+	return ::rtl::OUString( TK_RES_STRING( RID_STR_ACC_ACTION_SELECT ) );
 }
 
 // -----------------------------------------------------------------------------

accessibility/source/standard/vclxaccessiblescrollbar.cxx

 	VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
 	if ( pVCLXScrollBar )
 	{
-        rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+		// IA2 CWS: scroll bar should not have FOCUSABLE state.
+        // rStateSet.AddState( AccessibleStateType::FOCUSABLE );
 		if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::HORIZONTAL )
             rStateSet.AddState( AccessibleStateType::HORIZONTAL );
 		else if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::VERTICAL )
 }
 
 // -----------------------------------------------------------------------------
+
+// IAccessible2 implementation, 2009
+::rtl::OUString VCLXAccessibleScrollBar::getAccessibleName(  ) throw (uno::RuntimeException)
+{
+	OExternalLockGuard aGuard( this );
+
+	::rtl::OUString aName;
+	VCLXScrollBar* pVCLXScrollBar = static_cast< VCLXScrollBar* >( GetVCLXWindow() );
+	if ( pVCLXScrollBar )
+	{
+		if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::HORIZONTAL )
+            aName = TK_RES_STRING( RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL );
+		else if ( pVCLXScrollBar->getOrientation() == ScrollBarOrientation::VERTICAL )
+            aName = TK_RES_STRING( RID_STR_ACC_SCROLLBAR_NAME_VERTICAL );
+	}
+	return aName;
+}
+

accessibility/source/standard/vclxaccessibletabcontrol.cxx

 
 void VCLXAccessibleTabControl::UpdateSelected( sal_Int32 i, bool bSelected )
 {
-	NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+	// IAccessible2 implementation, 2009
+	//NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
 
 	if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
 	{

accessibility/source/standard/vclxaccessibletextcomponent.cxx

 
     if ( GetWindow() )
     {
-        Font aFont = GetWindow()->GetControlFont();
-        sal_Int32 nBackColor = GetWindow()->GetControlBackground().GetColor();
-        sal_Int32 nColor = GetWindow()->GetControlForeground().GetColor();
-        ::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+		Font aFont = GetWindow()->GetControlFont();
+
+		sal_Int32 nBackColor = GetWindow()->GetControlBackground().GetColor();
+		sal_Int32 nColor = GetWindow()->GetControlForeground().GetColor();
+
+		// MT: Code with default font was introduced with the IA2 CWS, but I am not convinced that this is the correct font...
+		// Decide what to do when we have a concrete issue.
+		/*
+		Font aDefaultVCLFont;
+		OutputDevice* pDev = Application::GetDefaultDevice();
+		if ( pDev )
+		{	
+			aDefaultVCLFont = pDev->GetSettings().GetStyleSettings().GetAppFont();
+			if ( !aFont.GetName().Len() )
+			{
+				String aDefaultName = aDefaultVCLFont.GetName();
+				aFont.SetName( aDefaultName );
+			}
+			if ( !aFont.GetHeight() )
+			{
+				aFont.SetHeight( aDefaultVCLFont.GetHeight() );
+			}
+			if ( aFont.GetWeight() == WEIGHT_DONTKNOW )
+			{
+				aFont.SetWeight( aDefaultVCLFont.GetWeight() );
+			}
+
+			//if nColor is -1, it may indicate that the default color black is using.
+			if ( nColor == -1)
+			{
+				nColor = aDefaultVCLFont.GetColor().GetColor();
+			}
+		}
+		*/
+
+		// MT: Adjustment stuff was introduced with the IA2 CWS, but adjustment is not a character attribute...
+		// In case we reintroduce it, use adjustment as extra parameter for the CharacterAttributesHelper...
+		/*
+		WinBits aBits = GetWindow()->GetStyle();
+		sal_Int16 nAdjust = -1;
+		if ( aBits & WB_LEFT )
+		{
+			nAdjust = style::ParagraphAdjust_LEFT;
+		}
+		else if ( aBits & WB_RIGHT )
+		{
+			nAdjust = style::ParagraphAdjust_RIGHT;
+		}
+		else if ( aBits & WB_CENTER )
+		{
+			nAdjust = style::ParagraphAdjust_CENTER;
+		}
+		*/
+
+		::std::auto_ptr< CharacterAttributesHelper > pHelper( new CharacterAttributesHelper( aFont, nBackColor, nColor ) );
+		
 		aValues = pHelper->GetCharacterAttributes( aRequestedAttributes );
     }
 

accessibility/source/standard/vclxaccessibletoolbox.cxx

 	{
 		ToolBoxItemsMap::iterator aIter = m_aAccessibleChildren.find( _nPos );
 		// returns only toolbox buttons, not windows
-		if ( aIter != m_aAccessibleChildren.end()  && !aIter->second.is())
+		if ( aIter != m_aAccessibleChildren.end()  && aIter->second.is())
 			pItem =	static_cast< VCLXAccessibleToolBoxItem* >( aIter->second.get() );
 	}
 
 		case VCLEVENT_TOOLBOX_DEACTIVATE:
     	case VCLEVENT_TOOLBOX_SELECT:
 			break;
-
+		// IA2 CWS. MT: Still using VCLEVENT_TOOLBOX_CLICK, see comment in vcl/source/window/toolbox2.cxx
+		/*
+		case VCLEVENT_TOOLBOX_ITEMUPDATED:
+		{
+	    	if ( rVclWindowEvent.GetData() )
+	        {
+				UpdateChecked_Impl( TOOLBOX_ITEM_NOTFOUND );
+	            UpdateIndeterminate_Impl( (sal_Int32)rVclWindowEvent.GetData() );
+	        }	
+		break;
+		}
+		*/
 		case VCLEVENT_TOOLBOX_HIGHLIGHT:
 			UpdateFocus_Impl();
 			break;

chart2/source/controller/accessibility/AccessibleBase.cxx

 sal_Int16 SAL_CALL AccessibleBase::getAccessibleRole()
     throw (RuntimeException)
 {
-    return AccessibleRole::LIST_ITEM; // #i73747# role SHAPE seems more appropriate, but is not read
+    // return AccessibleRole::LIST_ITEM; // #i73747# role SHAPE seems more appropriate, but is not read
+
+	// Use correct role now, since ZoomText's JAA support won't be used anymore...
+    return AccessibleRole::SHAPE;
 }
 
 Reference< XAccessibleRelationSet > SAL_CALL AccessibleBase::getAccessibleRelationSet()

chart2/source/controller/dialogs/tp_ChartType.cxx

         bool bIsHighContrast = ( true && GetSettings().GetStyleSettings().GetHighContrastMode() );
         m_pCurrentMainType->fillSubTypeList( m_aSubTypeList, bIsHighContrast, rParameter );
     }
+	// IA2 CWS wanted to change this to SelectItem( ..., false ). Would it make sense?!
     m_aSubTypeList.SelectItem( static_cast<sal_uInt16>( rParameter.nSubTypeIndex) );
     m_pAxisTypeResourceGroup->fillControls( rParameter );
     m_pDim3DLookResourceGroup->fillControls( rParameter );

chart2/source/controller/dialogs/tp_DataSource.cxx

 String lcl_GetRoleLBEntry(
     const OUString & rRole, const OUString & rRange )
 {
-    String aEntry( rRole );
-    aEntry += '\t';
-    aEntry += String(
-        ::chart::DialogModel::ConvertRoleFromInternalToUI( rRole ));
+//IAccessibility2 Implementation 2009-----
+    //String aEntry( rRole );
+    //aEntry += '\t';
+    //aEntry += String(
+    //    ::chart::DialogModel::ConvertRoleFromInternalToUI( rRole ));
+    String aEntry(::chart::DialogModel::ConvertRoleFromInternalToUI( rRole ));
+	//-----IAccessibility2 Implementation 2009
     aEntry += '\t';
     aEntry += String( rRange );
 
     return aResult;
 }
 
+//IAccessibility2 Implementation 2009-----
 static long lcl_pRoleListBoxTabs[] =
-	{	3,        // Number of Tabs
-		0, 0, 75
+	{	2,        // Number of Tabs
+		0, 75
 	};
+//-----IAccessibility2 Implementation 2009
 
 void lcl_ShowChooserButton(
     ::chart::RangeSelectionButton & rChooserButton,

cui/source/customize/macropg.cxx

     maHeaderBar( this, WB_BUTTONSTYLE | WB_BOTTOMBORDER )
 {
     maListBox.SetHelpId( HID_MACRO_HEADERTABLISTBOX );
+
+	// Sym2_1527, enable the cell focus to show visible focus
+	maListBox.EnableCellFocus();
 }
 
 _HeaderTabListBox::~_HeaderTabListBox()

cui/source/dialogs/cuigrfflt.cxx

 	maCbxInvert.Check( bInvert );
 	maCbxInvert.SetToggleHdl( GetModifyHdl() );
 
-	maMtrThreshold.GrabFocus();
+	// IA2 CWS
+	// maMtrThreshold.GrabFocus();
 }
 
 // -----------------------------------------------------------------------------
 	maMtrSepia.SetValue( nSepiaPercent );
 	maMtrSepia.SetModifyHdl( GetModifyHdl() );
 
-	maMtrSepia.GrabFocus();
+	// IA2 CWS
+	// maMtrSepia.GrabFocus();
 }
 
 // -----------------------------------------------------------------------------
     maNumPoster.SetLast( rGraphic.GetBitmapEx().GetBitCount() );
 	maNumPoster.SetValue( nPosterCount );
 	maNumPoster.SetModifyHdl( GetModifyHdl() );
-	maNumPoster.GrabFocus();
+
+	// IA2 CWS
+	// maNumPoster.GrabFocus();
 }
 
 // -----------------------------------------------------------------------------

cui/source/dialogs/iconcdlg.cxx

 	ActivatePageImpl( );
     if(bInvalidate)
         Invalidate();
+
+	// IA2 CWS. MT: I guess we want the event now, and not in Paint()?
+	IconChoicePageData* pData = GetPageData ( mnCurrentPageId );
+	if(pData)
+		ShowPageImpl ( pData );
 }
 
 /**********************************************************************

cui/source/tabpages/backgrnd.cxx

 			if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
             {
 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
-			    pParaBck_Impl->pParaBrush = new SvxBrushItem(*pBgdAttr);
-            }
+				if ( pBgdAttr )
+					pParaBck_Impl->pParaBrush = new SvxBrushItem(*pBgdAttr);
+				else
+					pParaBck_Impl->pParaBrush = NULL;
+			}			
 
 			nWhich = GetWhich( SID_ATTR_BRUSH_CHAR );
 			SfxItemState eState = rSet.GetItemState( nWhich, sal_True );

cui/source/tabpages/tabarea.src

         Pos = MAP_APPFONT ( 12 , 25  ) ;
 		Size = MAP_APPFONT ( 72 , 72 ) ;
 		TabStop = TRUE ;
+		//IAccessibility2 Implementation 2009-----
+		Text [ en-US ] = "Pattern Editor";
+		//-----IAccessibility2 Implementation 2009
 	};
     FixedText FT_COLOR
 	{
         Border = TRUE;
         Pos = MAP_APPFONT ( 157 , 14  ) ;
         Size = MAP_APPFONT ( 34 , 25 ) ;
+        // IAccessibility2 implementation 2009. ------
+		Text [ en-US ] = "Old Color" ;
+		// ------ IAccessibility2 implementation 2009.
 	};
 	Control CTL_PREVIEW_NEW
 	{
         Border = TRUE;
         Pos = MAP_APPFONT ( 157, 39  ) ;
         Size = MAP_APPFONT ( 34 , 25 ) ;
+        // IAccessibility2 implementation 2009. ------
+        Text [ en-US ] = "New Color" ;
+        // ------ IAccessibility2 implementation 2009.
 	};
     ListBox LB_COLORMODEL
 	{

editeng/inc/editeng/AccessibleStaticTextBase.hxx

  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * 
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
  *
- * $RCSfile: AccessibleStaticTextBase.hxx,v $
- * $Revision: 1.14 $
- *
  * This file is part of OpenOffice.org.
  *
  * OpenOffice.org is free software: you can redistribute it and/or modify

editeng/inc/editeng/outliner.hxx

File contents unchanged.

editeng/inc/editeng/splwrap.hxx

 	sal_Bool	bAllRight	: 1; // falsche Woerter in geignetes Woerterbuch
 							 // aufnehmen und nicht den Dialog starten.
 
+
 	EDITENG_DLLPRIVATE sal_Bool 	SpellNext();   		// naechsten Bereich anwaehlen
 	sal_Bool	FindSpellError(); 	// Suche nach Fehlern ( ueber Bereiche hinweg )
 

editeng/inc/editeng/unoedhlp.hxx

 
         @param nIndex
         The character index from which the range of similar attributed characters is requested
+		
+		@param bInCell
+		Introduced with CWS IA2
 
         @return sal_True, if the range has been successfully determined
      */
-    static sal_Bool GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, const EditEngine& rEE, sal_uInt16 nPara, sal_uInt16 nIndex );
+    static sal_Bool GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, const EditEngine& rEE, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell=sal_False );
 
     /** Convert point from edit engine to user coordinate space
 

editeng/inc/editeng/unoedprx.hxx

 	virtual XubString    	CalcFieldValue( const SvxFieldItem& rField, sal_uInt16 nPara, sal_uInt16 nPos, Color*& rpTxtColor, Color*& rpFldColor );
 	virtual void 	        FieldClicked( const SvxFieldItem& rField, sal_uInt16 nPara, xub_StrLen nPos );
 	
-	virtual sal_Bool			IsValid() const;
+	virtual sal_Bool		IsValid() const;
 
     virtual LanguageType 	GetLanguage( sal_uInt16, sal_uInt16 ) const;
-    virtual sal_uInt16			GetFieldCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetFieldCount( sal_uInt16 nPara ) const;
     virtual EFieldInfo		GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const;
     virtual EBulletInfo     GetBulletInfo( sal_uInt16 nPara ) const;
     virtual Rectangle		GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
 	virtual OutputDevice*	GetRefDevice() const;
     virtual sal_Bool		GetIndexAtPoint( const Point&, sal_uInt16& nPara, sal_uInt16& nIndex ) const;
     virtual sal_Bool		GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const;
-    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const;
-    virtual sal_uInt16			GetLineCount( sal_uInt16 nPara ) const;
-    virtual sal_uInt16			GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
+    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell = sal_False ) const;
+    virtual sal_uInt16		GetLineCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
     virtual void            GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nParagraph, sal_uInt16 nLine ) const;
-    virtual sal_uInt16          GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
+    virtual sal_uInt16      GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
     
     virtual sal_Bool        Delete( const ESelection& );
     virtual sal_Bool		InsertText( const String&, const ESelection& );

editeng/inc/editeng/unoedsrc.hxx

 
         @param nIndex
         The character index from which the range of similar attributed characters is requested
+		
+		@param bInCell
+		Introduced with IA2 CWS...
 
         @return sal_True, if the range has been successfully determined
      */
-    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const = 0;
+    virtual sal_Bool		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell = sal_False ) const = 0;
 
     /** Query number of lines in the formatted paragraph
 
     	@return sal_False if no view or no selection (the empty selection _is_ a selection)
      */
     virtual sal_Bool Paste() = 0;
-
 };
 
 #endif

editeng/inc/editeng/unofored.hxx

 	virtual sal_Bool		 IsValid() const;
 
     virtual LanguageType 	GetLanguage( sal_uInt16, sal_uInt16 ) const;
-    virtual sal_uInt16			GetFieldCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetFieldCount( sal_uInt16 nPara ) const;
     virtual EFieldInfo		GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const;
     virtual EBulletInfo     GetBulletInfo( sal_uInt16 nPara ) const;
     virtual Rectangle		GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
 	virtual OutputDevice*	GetRefDevice() const;
     virtual sal_Bool		GetIndexAtPoint( const Point&, sal_uInt16& nPara, sal_uInt16& nIndex ) const;
     virtual sal_Bool		GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const;
-    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const;
-    virtual sal_uInt16			GetLineCount( sal_uInt16 nPara ) const;
-    virtual sal_uInt16			GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
+    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell = sal_False ) const;
+    virtual sal_uInt16		GetLineCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
     virtual void            GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nParagraph, sal_uInt16 nLine ) const;
-    virtual sal_uInt16          GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
+    virtual sal_uInt16      GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
     virtual sal_Bool		Delete( const ESelection& );
     virtual sal_Bool		InsertText( const String&, const ESelection& );
     virtual sal_Bool		QuickFormatDoc( sal_Bool bFull=sal_False );

editeng/inc/editeng/unoforou.hxx

 	Outliner&			GetOutliner() const { return rOutliner; }
 
     virtual LanguageType 	GetLanguage( sal_uInt16, sal_uInt16 ) const;
-    virtual sal_uInt16			GetFieldCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetFieldCount( sal_uInt16 nPara ) const;
     virtual EFieldInfo		GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const;
     virtual EBulletInfo     GetBulletInfo( sal_uInt16 nPara ) const;
     virtual Rectangle		GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
 	virtual OutputDevice*	GetRefDevice() const;
     virtual sal_Bool		GetIndexAtPoint( const Point&, sal_uInt16& nPara, sal_uInt16& nIndex ) const;
     virtual sal_Bool		GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const;
-    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const;
-    virtual sal_uInt16			GetLineCount( sal_uInt16 nPara ) const;
-    virtual sal_uInt16			GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
+    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell = sal_False ) const;
+    virtual sal_uInt16		GetLineCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
     virtual void            GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nPara, sal_uInt16 nLine ) const;
-    virtual sal_uInt16          GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
+    virtual sal_uInt16      GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
     virtual sal_Bool		Delete( const ESelection& );
     virtual sal_Bool		InsertText( const String&, const ESelection& );
     virtual sal_Bool		QuickFormatDoc( sal_Bool bFull=sal_False );

editeng/inc/editeng/unotext.hxx

 
     virtual void 			SetNotifyHdl( const Link& );
     virtual LanguageType 	GetLanguage( sal_uInt16, sal_uInt16 ) const;
-    virtual sal_uInt16			GetFieldCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetFieldCount( sal_uInt16 nPara ) const;
     virtual EFieldInfo		GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const;
     virtual EBulletInfo     GetBulletInfo( sal_uInt16 nPara ) const;
     virtual Rectangle		GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
 	virtual OutputDevice*	GetRefDevice() const;
     virtual sal_Bool		GetIndexAtPoint( const Point&, sal_uInt16& nPara, sal_uInt16& nIndex ) const;
     virtual sal_Bool		GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const;
-    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const;
-    virtual sal_uInt16			GetLineCount( sal_uInt16 nPara ) const;
-    virtual sal_uInt16			GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
+    virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex, sal_Bool bInCell = sal_False ) const;
+    virtual sal_uInt16		GetLineCount( sal_uInt16 nPara ) const;
+    virtual sal_uInt16		GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
     virtual void            GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nParagraph, sal_uInt16 nLine ) const;
-    virtual sal_uInt16          GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
+    virtual sal_uInt16      GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
     virtual sal_Bool		Delete( const ESelection& );
     virtual sal_Bool		InsertText( const String&, const ESelection& );
     virtual sal_Bool		QuickFormatDoc( sal_Bool bFull=sal_False );

editeng/source/accessibility/AccessibleEditableTextPara.cxx

     {
         DBG_CHKTHIS( AccessibleEditableTextPara, NULL );
 
-        mpEditSource = pEditSource;
-
         WeakBullet::HardRefType aChild( maImageBullet.get() );
         if( aChild.is() )
             aChild->SetEditSource(pEditSource);
 
-        if( !mpEditSource )
+        if( !pEditSource ) 
         {
             // going defunc
             UnSetState( AccessibleStateType::SHOWING );
             Dispose();
         }
 
+		mpEditSource = pEditSource; 
+
         // #108900# Init last text content
         try
         {
             !pStateSet->contains(nStateId) )
         {
             pStateSet->AddState( nStateId );
-            GotPropertyEvent( uno::makeAny( nStateId ), AccessibleEventId::STATE_CHANGED );
+//IAccessibility2 Implementation 2009-----
+		// MT: Removed method IsShapeParaFocusable which was introduced with IA2 - basically it was only about figuring out wether or not the window has the focus, should be solved differently
+		// if(IsShapeParaFocusable())
+//-----IAccessibility2 Implementation 2009
+			GotPropertyEvent( uno::makeAny( nStateId ), AccessibleEventId::STATE_CHANGED );
         }
     }
 

editeng/source/accessibility/AccessibleHyperlink.cxx

 }  // end of namespace accessibility
 
 //------------------------------------------------------------------------
+
+// MT IA2: Accessiblehyperlink.hxx from IA2 CWS - meanwhile we also introduced one in DEV300 (above)
+// Keeping this for reference - we probably should get support for image maps in our implementation...
+
+//IAccessibility2 Implementation 2009-----
+
+/*
+
+class SVX_DLLPUBLIC SvxAccessibleHyperlink : 
+		public ::cppu::WeakImplHelper1<
+		::com::sun::star::accessibility::XAccessibleHyperlink >
+{
+	SvxURLField* mpField;
+	sal_Int32 nStartIdx;
+	sal_Int32 nEndIdx;
+
+	ImageMap* mpImageMap;
+	SdrObject* m_pShape;
+	::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >  shapeParent;
+
+public:
+
+	SvxAccessibleHyperlink(){};
+	//SvxAccessibleHyperlink(::rtl::OUString name, const Imagemap* pImageMap);
+	SvxAccessibleHyperlink(const SvxURLField* p, sal_Int32 nStt, sal_Int32 nEnd);
+	SvxAccessibleHyperlink(SdrObject* p, ::accessibility::AccessibleShape* pAcc);
+	virtual ~SvxAccessibleHyperlink();
+	//void setImageMap(ImageMap* pMap);
+	//void setXAccessibleImage(::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > parent);
+	::rtl::OUString GetHyperlinkURL(sal_Int32 nIndex) throw (::com::sun::star::lang::IndexOutOfBoundsException);
+	sal_Bool IsValidHyperlink();
+
+	// XAccessibleAction
+    virtual sal_Int32 SAL_CALL getAccessibleActionCount() 
+		throw (::com::sun::star::uno::RuntimeException);
+    virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) 
+		throw (::com::sun::star::lang::IndexOutOfBoundsException, 
+				::com::sun::star::uno::RuntimeException);
+    virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription( 
+				sal_Int32 nIndex ) 
+		throw (::com::sun::star::lang::IndexOutOfBoundsException,
+				::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Reference< 
+			::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL
+		   	getAccessibleActionKeyBinding( sal_Int32 nIndex ) 
+		throw (::com::sun::star::lang::IndexOutOfBoundsException, 
+				::com::sun::star::uno::RuntimeException);
+
+	// XAccessibleHyperlink
+    virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleActionAnchor( 
+				sal_Int32 nIndex ) 
+		throw (::com::sun::star::lang::IndexOutOfBoundsException, 
+				::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleActionObject( 
+			sal_Int32 nIndex ) 
+		throw (::com::sun::star::lang::IndexOutOfBoundsException, 
+				::com::sun::star::uno::RuntimeException);
+    virtual sal_Int32 SAL_CALL getStartIndex() 
+		throw (::com::sun::star::uno::RuntimeException);
+    virtual sal_Int32 SAL_CALL getEndIndex() 
+		throw (::com::sun::star::uno::RuntimeException);
+    virtual sal_Bool SAL_CALL isValid(  ) 
+		throw (::com::sun::star::uno::RuntimeException);
+};
+
+
+SvxAccessibleHyperlink::SvxAccessibleHyperlink( const SvxURLField *p,
+										  sal_Int32 nStt, sal_Int32 nEnd ) :
+	nStartIdx( nStt ),
+	nEndIdx( nEnd ),
+	m_pShape(NULL),
+	shapeParent(NULL)
+{
+	if(p)
+		mpField = (SvxURLField*)p->Clone();
+	else
+		mpField = NULL;
+}
+	
+SvxAccessibleHyperlink::SvxAccessibleHyperlink(SdrObject* p, 
+											::accessibility::AccessibleShape* pAcc) :
+	nStartIdx( -1 ),
+	nEndIdx( -1 ),
+	mpField(NULL),
+	m_pShape(p)
+{
+	mpImageMap = m_pShape->GetModel()->GetImageMapForObject(m_pShape);
+	shapeParent = dynamic_cast< XAccessible* >(pAcc);
+}
+
+SvxAccessibleHyperlink::~SvxAccessibleHyperlink()
+{
+	if(mpField)
+		delete mpField;
+}
+
+::rtl::OUString SvxAccessibleHyperlink::GetHyperlinkURL(sal_Int32 nIndex) throw (::com::sun::star::lang::IndexOutOfBoundsException)
+{
+	if( mpField )
+	{
+		if (nIndex != 0)
+	        throw ::com::sun::star::lang::IndexOutOfBoundsException();
+		return ::rtl::OUString( mpField->GetURL() );
+	}
+	else if (mpImageMap)
+	{
+		if (nIndex < 0 || nIndex >=mpImageMap->GetIMapObjectCount())
+			throw IndexOutOfBoundsException();
+		
+		IMapObject* pMapObj = mpImageMap->GetIMapObject(sal_uInt16(nIndex));
+		if (pMapObj->GetURL().Len())
+			return ::rtl::OUString( pMapObj->GetURL() );
+	}
+	else
+	{
+		if (nIndex != 0)
+	        throw ::com::sun::star::lang::IndexOutOfBoundsException();
+		
+		SdrUnoObj* pUnoCtrl = dynamic_cast< SdrUnoObj* >( m_pShape );
+	
+		if(pUnoCtrl) 
+		{
+			try
+			{
+				uno::Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), uno::UNO_QUERY_THROW );
+				uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW );
+				uno::Reference< beans::XPropertySetInfo > xPropInfo( xPropSet->getPropertySetInfo(), uno::UNO_QUERY_THROW );
+		
+				form::FormButtonType eButtonType = form::FormButtonType_URL;