1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_comphelper.hxx"
30 
31 // includes --------------------------------------------------------------
32 #include <comphelper/accessiblekeybindinghelper.hxx>
33 
34 
35 //..............................................................................
36 namespace comphelper
37 {
38 //..............................................................................
39 
40 	using namespace ::com::sun::star; // MT 04/2003: was ::drafts::com::sun::star - otherwise to many changes
41 	using namespace ::com::sun::star::uno;
42 	using namespace ::com::sun::star::lang;
43 	using namespace ::com::sun::star::accessibility;
44 
45 	//==============================================================================
46 	// OAccessibleKeyBindingHelper
47 	//==============================================================================
48 
49 	OAccessibleKeyBindingHelper::OAccessibleKeyBindingHelper()
50 	{
51 	}
52 
53 	// -----------------------------------------------------------------------------
54 
55 	OAccessibleKeyBindingHelper::OAccessibleKeyBindingHelper( const OAccessibleKeyBindingHelper& rHelper )
56 		: cppu::WeakImplHelper1<XAccessibleKeyBinding>( rHelper )
57         , m_aKeyBindings( rHelper.m_aKeyBindings )
58 	{
59 	}
60 
61 	// -----------------------------------------------------------------------------
62 
63 	OAccessibleKeyBindingHelper::~OAccessibleKeyBindingHelper()
64 	{
65 	}
66 
67 	// -----------------------------------------------------------------------------
68 
69 	void OAccessibleKeyBindingHelper::AddKeyBinding( const Sequence< awt::KeyStroke >& rKeyBinding ) throw (RuntimeException)
70 	{
71 		::osl::MutexGuard aGuard( m_aMutex );
72 
73 		m_aKeyBindings.push_back( rKeyBinding );
74 	}
75 
76 	// -----------------------------------------------------------------------------
77 
78 	void OAccessibleKeyBindingHelper::AddKeyBinding( const awt::KeyStroke& rKeyStroke ) throw (RuntimeException)
79 	{
80 		::osl::MutexGuard aGuard( m_aMutex );
81 
82 		Sequence< awt::KeyStroke > aSeq(1);
83 		aSeq[0] = rKeyStroke;
84 		m_aKeyBindings.push_back( aSeq );
85 	}
86 
87 	// -----------------------------------------------------------------------------
88 	// XAccessibleKeyBinding
89 	// -----------------------------------------------------------------------------
90 
91 	sal_Int32 OAccessibleKeyBindingHelper::getAccessibleKeyBindingCount() throw (RuntimeException)
92 	{
93 		::osl::MutexGuard aGuard( m_aMutex );
94 
95 		return m_aKeyBindings.size();
96 	}
97 
98 	// -----------------------------------------------------------------------------
99 
100 	Sequence< awt::KeyStroke > OAccessibleKeyBindingHelper::getAccessibleKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
101 	{
102 		::osl::MutexGuard aGuard( m_aMutex );
103 
104 		if ( nIndex < 0 || nIndex >= (sal_Int32)m_aKeyBindings.size() )
105 			throw IndexOutOfBoundsException();
106 
107 		return m_aKeyBindings[nIndex];
108 	}
109 
110 	// -----------------------------------------------------------------------------
111 
112 //..............................................................................
113 }	// namespace comphelper
114 //..............................................................................
115