/************************************************************** * * 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_frame_XUIElementFactoryRegistration_idl__ #define __com_sun_star_frame_XUIElementFactoryRegistration_idl__ #ifndef __com_sun_star_uno_XInterface_idl__ #include #endif #ifndef __com_sun_star_ui_XUIElementFactory_idl__ #include #endif #ifndef __com_sun_star_container_ElementExistException_idl__ #include #endif #ifndef __com_sun_star_container_NoSuchElementException_idl__ #include #endif #ifndef __com_sun_star_beans_PropertyValue_idl__ #include #endif //============================================================================= module com { module sun { module star { module ui { //============================================================================= /** is used to query, register and deregister user interface element factories.

A user interface element factory is registered for a set of three properties.

  • Typea string that identifies a type of a user interface element.
  • Namea string that identifies a single user interface element within a type class.
  • Modulea string that identifies a single module of OpenOffice.
    • A combination of these three property values can uniquely identifiy every user interface element within OpenOffice. Currently the following user interface element types are defined:
      • menubar
      • popupmenu
      • toolbar
      • statusbar
      • floater

      @since OOo 2.0 */ interface XUIElementFactoryRegistration : com::sun::star::uno::XInterface { /** function to retrieve a list of all registered user interface element factories @returns a sequence of sequence of propert values which describe every registered user interface element factory.
      The following properties are defined:
      • Typea string property that identifies the type of the user interface element which this factory can create.
      • Namean optional string property which identifies a single user interface element within a type class which this factory can create. If this property is not returned, the factory is a generic factory for all user interface elements of the same type.
      • Modulean optional string property that specifies to which module this factory is bound to. If this property is not returned, the factory is a generic factory.
      */ sequence< sequence< com::sun::star::beans::PropertyValue > > getRegisteredFactories(); /** function to retrieve a previously registered user interface element factory. @returns a reference to a registered user interface element factory if a factory has been found. An empty reference when no factory has been found. The defined search order of factories must be from special to generic ones. @param ResourceURL a resource URL which identifies a user interface element. A resource URL uses the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and name. @param ModuleName an optional module identifier. This value can remain empty, if a generic factory is requested. The module identifier can be retrieved from the ModuleManager service. */ ::com::sun::star::ui::XUIElementFactory getFactory( [in] string ResourceURL, [in] string ModuleIdentifier ); /** function to register a user interface element factory. @param aType a string that identifies a type of a user interface element. Currently the following types are supported:
      • menubar
      • toolbar
      • statusbar
      @param aName an optional name of a single user interface element. This name must be unique within a user interface element type class. This value can remain empty if no special factory for a single user interface element is needed. @param aModuleIdentifier an optional module identifier that can be used to register a factory only for a single module. This value can remain empty if no special factory for a single module is needed. The module identifier can be retrieved from the ModuleManager service. @param aFactoryImplementationName a UNO implementation name that can be used by an implementation to create a factory instance. */ void registerFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier, [in] string aFactoryImplementationName ) raises (com::sun::star::container::ElementExistException); /** function to remove a previously defined user interface element factory. @param aType a string that identifies a type of a user interface element. Currently the following types are supported:
      • menubar
      • toolbar
      • statusbar
      @param aName an optional name of a single user interface element. This name must be unique within a user interface element type class. This value can remain empty if no special factory for a single user interface element should be deregistered. @param aModuleName an optional module name that can be used to deregister a factory only for a single module. This value can remain empty if not a module based factory should be deregisted. The module identifier can be retrieved from the ModuleManager service.

      Using this function can be very dangerous as other implementation with OpenOffice may not be able to create their user interface element anymore.

      */ void deregisterFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier ) raises (com::sun::star::container::NoSuchElementException); }; }; }; }; }; //============================================================================= #endif