/**************************************************************
 * 
 * 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 __com_sun_star_awt_UnoControlDialogElement_idl__ 
#define __com_sun_star_awt_UnoControlDialogElement_idl__

//============================================================================= 
 
 module com {  module sun {  module star {  module awt {  
 
//=============================================================================
     
/**	specifies a set of properties to describe the model of an
    <type>UnoControl</type> which is embedded in a
    <type>UnoControlDialogModel</type>.    
 */
published service UnoControlDialogElement
{ 
	//-------------------------------------------------------------------------

	/** specifies the height of the control.
	 */
	[property] long Height; 
 
	//------------------------------------------------------------------------- 

	/** specifies the name of the control.
	 */
	[property] string Name;
    
	//------------------------------------------------------------------------- 

	/** specifies the horizontal position of the control.
	 */
	[property] string PositionX;
    
	//------------------------------------------------------------------------- 

	/** specifies the vertical position of the control.
	 */
	[property] string PositionY;
    
	//-------------------------------------------------------------------------

	/** specifies the step of the control.
	 */
	[property] long Step;
    
	//-------------------------------------------------------------------------

	/** specifies the tabindex of the control.
	 */
	[property] short TabIndex;
    
	//-------------------------------------------------------------------------
    
	/** specifies the tag of the control.
	 */
	[property] string Tag;
    
	//-------------------------------------------------------------------------
    
	/** specifies the width of the control.
	 */
	[property] long Width;

	//-------------------------------------------------------------------------    
}; 
 
//============================================================================= 
 
}; }; }; };  
 
#endif 
