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

#ifndef __ooo_vba_XHelperInterface_idl__
#include <ooo/vba/XHelperInterface.idl>
#endif
#ifndef  __ooo_vba_XCollection_idl__
#include <ooo/vba/XCollection.idl>
#endif
module ooo {  module vba { module msforms {

interface XControl;

interface XControls 
{
    interface ooo::vba::XCollection;
    void Move( [in] double cx, [in] double cy );

    // the following two methods should be actually part of XCollection, but at least Add conflicts with
    // methods in the derived from XCollection interfaces
    // thus the methods are declared in the top-level interface
    any  Add( [in] any Object, [in] any StringKey, [in] any Before, [in] any After );
    void Remove( [in] any StringKeyOrIndex );

};
}; }; };


#endif
