1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef SVTOOLS_CONTROLACCESS_HXX
25*b1cdbd2cSJim Jagielski #define SVTOOLS_CONTROLACCESS_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svtools/fileview.hxx>
28*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/IllegalArgumentException.hpp>
30*b1cdbd2cSJim Jagielski #include "pickercallbacks.hxx"
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski //.........................................................................
33*b1cdbd2cSJim Jagielski namespace svt
34*b1cdbd2cSJim Jagielski {
35*b1cdbd2cSJim Jagielski //.........................................................................
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski 	// --------------------------------------------------------------------
38*b1cdbd2cSJim Jagielski 	namespace InternalFilePickerElementIds
39*b1cdbd2cSJim Jagielski 	{
40*b1cdbd2cSJim Jagielski 		static const sal_Int16 PUSHBUTTON_HELP = (sal_Int16)0x1000;
41*b1cdbd2cSJim Jagielski 		static const sal_Int16 TOOLBOXBUTOON_DEFAULT_LOCATION = (sal_Int16)0x1001;
42*b1cdbd2cSJim Jagielski 		static const sal_Int16 TOOLBOXBUTOON_LEVEL_UP = (sal_Int16)0x1002;
43*b1cdbd2cSJim Jagielski 		static const sal_Int16 TOOLBOXBUTOON_NEW_FOLDER = (sal_Int16)0x1003;
44*b1cdbd2cSJim Jagielski 		static const sal_Int16 FIXEDTEXT_CURRENTFOLDER = (sal_Int16)0x1004;
45*b1cdbd2cSJim Jagielski 	}
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski 	// --------------------------------------------------------------------
48*b1cdbd2cSJim Jagielski 	/**	implements the XControlAccess, XControlInformation and XFilePickerControlAccess for the file picker
49*b1cdbd2cSJim Jagielski 	*/
50*b1cdbd2cSJim Jagielski 	class OControlAccess
51*b1cdbd2cSJim Jagielski 	{
52*b1cdbd2cSJim Jagielski 		IFilePickerController*	m_pFilePickerController;
53*b1cdbd2cSJim Jagielski 		SvtFileView*			m_pFileView;
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski 	public:
56*b1cdbd2cSJim Jagielski 		OControlAccess( IFilePickerController* _pController, SvtFileView* _pFileView );
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski 		// XControlAccess implementation
59*b1cdbd2cSJim Jagielski 		void setControlProperty( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty, const ::com::sun::star::uno::Any& _rValue );
60*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Any	getControlProperty( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty );
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski 		// XControlInformation implementation
63*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence< ::rtl::OUString >	getSupportedControls(  );
64*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence< ::rtl::OUString >	getSupportedControlProperties( const ::rtl::OUString& _rControlName );
65*b1cdbd2cSJim Jagielski 		sal_Bool											isControlSupported( const ::rtl::OUString& _rControlName );
66*b1cdbd2cSJim Jagielski 		sal_Bool											isControlPropertySupported( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty );
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski 		// XFilePickerControlAccess
69*b1cdbd2cSJim Jagielski 		void						setValue( sal_Int16 _nId, sal_Int16 _nCtrlAction, const ::com::sun::star::uno::Any& _rValue );
70*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Any  getValue( sal_Int16 _nId, sal_Int16 _nCtrlAction ) const;
71*b1cdbd2cSJim Jagielski 		void						setLabel( sal_Int16 _nId, const ::rtl::OUString& _rValue );
72*b1cdbd2cSJim Jagielski 		::rtl::OUString             getLabel( sal_Int16 _nId ) const;
73*b1cdbd2cSJim Jagielski 		void                        enableControl( sal_Int16 _nId, sal_Bool _bEnable );
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski 		static void				setHelpURL( Window* _pControl, const ::rtl::OUString& _rURL, sal_Bool _bFileView );
76*b1cdbd2cSJim Jagielski 		static ::rtl::OUString	getHelpURL( Window* _pControl, sal_Bool _bFileView );
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	private:
79*b1cdbd2cSJim Jagielski 		/** implements the various methods for setting properties on controls
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski             @param _nControlId
82*b1cdbd2cSJim Jagielski                 the id of the control
83*b1cdbd2cSJim Jagielski 			@param _pControl
84*b1cdbd2cSJim Jagielski 				the affected control. Must be the same as referred by <arg>_nControlId</arg>, or NULL.
85*b1cdbd2cSJim Jagielski 			@param _nProperty
86*b1cdbd2cSJim Jagielski 				the property to set
87*b1cdbd2cSJim Jagielski 				See PROPERTY_FLAG_*
88*b1cdbd2cSJim Jagielski 			@param _rValue
89*b1cdbd2cSJim Jagielski 				the value to set
90*b1cdbd2cSJim Jagielski 			@param _bIgnoreIllegalArgument
91*b1cdbd2cSJim Jagielski 				if <FALSE/>, an exception will be thrown if the given value is of improper type
92*b1cdbd2cSJim Jagielski 		*/
93*b1cdbd2cSJim Jagielski 		void						implSetControlProperty(
94*b1cdbd2cSJim Jagielski                                         sal_Int16 _nControlId,
95*b1cdbd2cSJim Jagielski 										Control* _pControl, sal_Int16 _nProperty, const ::com::sun::star::uno::Any& _rValue,
96*b1cdbd2cSJim Jagielski 										sal_Bool _bIgnoreIllegalArgument = sal_True );
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski 		Control* implGetControl( const ::rtl::OUString& _rControlName, sal_Int16* _pId = NULL, sal_Int32* _pPropertyMask = NULL ) const SAL_THROW( (::com::sun::star::lang::IllegalArgumentException) );
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 		/** implements the various methods for retrieving properties from controls
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 			@param _pControl
103*b1cdbd2cSJim Jagielski 				the affected control
104*b1cdbd2cSJim Jagielski 				@PRECOND not <NULL/>
105*b1cdbd2cSJim Jagielski 			@param _nProperty
106*b1cdbd2cSJim Jagielski 				the property to retrieve
107*b1cdbd2cSJim Jagielski 				See PROPERTY_FLAG_*
108*b1cdbd2cSJim Jagielski 			@return
109*b1cdbd2cSJim Jagielski 		*/
110*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Any	implGetControlProperty( Control* _pControl, sal_Int16 _nProperty ) const;
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 		void implDoListboxAction( ListBox* _pListbox, sal_Int16 _nCtrlAction, const ::com::sun::star::uno::Any& _rValue );
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	};
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski //.........................................................................
117*b1cdbd2cSJim Jagielski }	// namespace svt
118*b1cdbd2cSJim Jagielski //.........................................................................
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski #endif // SVTOOLS_CONTROLACCESS_HXX
121*b1cdbd2cSJim Jagielski 
122