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

module com { module sun { module star { module drawing {

/** The drawing framework is responsible for managing the resources used by
    the UI of the drawing applications.
    <p>The framework is implemented by a set of sub controllers that are
    responsible for its different resources: <type
    scope="com::sun::star::drawing::framework">XModuleController</type>,
    <type scope="com::sun::star::drawing::framework">XPaneController</type>,
    <type scope="com::sun::star::drawing::framework">XViewController</type>,
    <type scope="com::sun::star::drawing::framework">XToolbarController</type>,
    <type scope="com::sun::star::drawing::framework">XCommandController</type>.
    The set of active resources is represented by the <type
    scope="com::sun::star::drawing::framework">XConfiguration</type>.</p>
    <p>The <type
    scope="com::sun::star::drawing::framework">XControllerManager</type>
    interface provides access to the sub controllers.  It typically is
    implemented by the same class that implements the <type
    scope="com::sun::star::frame">XController</type> interface.</p>
    <p>The
    configuration is managed by the <type
    scope="com::sun::star::drawing::framework">XConfigurationController</type>.
    It coordinates changes to the configuration made by the other sub
    controllers so that
    <ul><li>unnecessary ui updates (flickering) is avoided and</li>
    <li>and the configuration is always in a valid and meaningfull
    state.</li></ul></p>
    <p>For more information please see the wiki page of the <a
    href="http://wiki.services.openoffice.org/wiki/Drawing_framework">drawing framework</a>.
*/
module framework {};

}; }; }; };

#endif

