/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/


#ifndef SVX_CONTROLL_FUCUS_HELPER_HXX
#define SVX_CONTROLL_FUCUS_HELPER_HXX

#include <vcl/ctrl.hxx>

// class SvxControlFocusHelper ---------------------------------------------

class SvxControlFocusHelper : public Control
{
private:
	Control*		m_pFocusCtrl;

public:
	SvxControlFocusHelper( Window* pParent, const ResId& rId ) :
		Control( pParent, rId ), m_pFocusCtrl( NULL ) {}

	void			SetFocusControl( Control* pCtrl ) { m_pFocusCtrl = pCtrl; }

	virtual long	Notify( NotifyEvent& rNEvt );
};

#endif	// SVX_CONTROLL_FUCUS_HELPER_HXX
