| /************************************************************** |
| * |
| * 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_XFrame_idl__ |
| #define __com_sun_star_frame_XFrame_idl__ |
| |
| #ifndef __com_sun_star_lang_XComponent_idl__ |
| #include <com/sun/star/lang/XComponent.idl> |
| #endif |
| |
| #ifndef __com_sun_star_awt_XWindow_idl__ |
| #include <com/sun/star/awt/XWindow.idl> |
| #endif |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module frame { |
| |
| published interface XFrameActionListener; |
| published interface XController; |
| published interface XFramesSupplier; |
| |
| //============================================================================= |
| /** a frame object can be considered to be an "anchor" object where a component |
| can be attached to. |
| |
| <p> |
| A frame can be (it's not a must!) a part of a frame tree. If not this frame willn't be |
| accessible by using the api. This mode make sense for previews. |
| The root node of the tree can be a <type>Desktop</type> implementation. |
| </p> |
| |
| @see Desktop |
| */ |
| published interface XFrame: com::sun::star::lang::XComponent |
| { |
| //------------------------------------------------------------------------- |
| /** is called to initialize the frame within a window - the container window. |
| |
| <p> |
| This window will be used as parent for the component window and to support |
| some UI relevant features of the frame service. |
| Note: Re-parenting mustn't supported by a real frame implementation! |
| It's designed for initializing - not for setting. |
| </p> |
| |
| <p>This frame will take over ownership of the window refered from |
| <var>xWindow</var>. Thus, the previous owner is not allowed to |
| dispose this window anymore. </p> |
| |
| @param xWindow |
| the new container window |
| |
| @see XFrame::getContainerWindow() |
| */ |
| void initialize( [in] com::sun::star::awt::XWindow xWindow ); |
| |
| //------------------------------------------------------------------------- |
| /** provides access to the container window of the frame. |
| |
| <p> |
| Normally this is used as the parent window of the |
| component window. |
| </p> |
| |
| @return |
| the container window of this frame |
| |
| @see XFrame::initialize() |
| */ |
| com::sun::star::awt::XWindow getContainerWindow(); |
| |
| //------------------------------------------------------------------------- |
| /** sets the frame container that created this frame. |
| |
| <p> |
| Only the creator is allowed to call this method. |
| But creator doesn't mean the implementation which creates this instance ... |
| it means the parent frame of the frame hierarchy. |
| Because; normaly a frame should be created by using the api |
| and is neccessary for searches inside the tree (e.g. <member>XFrame::findFrame()</member>) |
| </p> |
| |
| @param Creator |
| the creator (parent) of this frame |
| |
| @see XFrame::getCreator() |
| */ |
| [oneway] void setCreator( [in] XFramesSupplier Creator ); |
| |
| //------------------------------------------------------------------------- |
| /** provides access to the creator (parent) of this frame |
| |
| @returns |
| the frame container that created and contains this frame. |
| |
| @see XFrame::setCreator() |
| */ |
| XFramesSupplier getCreator(); |
| |
| //------------------------------------------------------------------------- |
| /** access to the name property of this frame |
| |
| @returns |
| the programmatic name of this frame. |
| |
| @see XFrame::setName() |
| */ |
| string getName(); |
| |
| //------------------------------------------------------------------------- |
| /** sets the name of the frame. |
| |
| <p> |
| Normally the name of the frame is set initially (e.g. by the creator). |
| The name of a frame will be used for identifying it if a frame search was started. |
| These searches can be forced by: |
| <ul> |
| <li><member>XFrame::findFrame()</member> |
| <li><member>XDispatchProvider::queryDispatch()</member> |
| <li><member>XComponentLoader::loadComponentFromURL()</member> |
| </ul> |
| Note: Special targets like "_blank", "_self" etc. are not allowed. |
| That's why frame names shouldn't start with a sign "_". |
| </p> |
| |
| @param aName |
| the new programmatic name of this frame |
| |
| @see XFrame::findFrame() |
| @see XFrame::getName() |
| @see XDispatchProvider |
| @see XComponentLoader |
| */ |
| [oneway] void setName( [in] string aName ); |
| |
| //------------------------------------------------------------------------- |
| /** searches for a frame with the specified name. |
| |
| <p> |
| Frames may contain other frames (e.g., a frameset) and may |
| be contained in other frames. This hierarchy is searched with |
| this method. |
| First some special names are taken into account, i.e. "", |
| "_self", "_top", "_blank" etc. <var>SearchFlags</var> is ignored when |
| comparing these names with <var>TargetFrameName</var>; further steps are |
| controlled by <var>SearchFlags</var>. If allowed, the name of the frame |
| itself is compared with the desired one, and then ( again if allowed ) |
| the method is called for all children of the frame. Finally may be called |
| for the siblings and then for parent frame (if allowed). |
| </p> |
| |
| <p> |
| List of special target names: |
| <table border=1> |
| <tr><td>""/"_self"</td><td>address the starting frame itself</td></tr> |
| <tr><td>"_parent"</td><td>address the direct parent frame only</td></tr> |
| <tr><td>"_top"</td><td>address the top frame of this subtree of the frametree</td></tr> |
| <tr><td>"_blank"</td><td>creates a new top frame</td></tr> |
| </table> |
| </p> |
| |
| <p> |
| If no frame with the given name is found, a new top frame is |
| created; if this is allowed by a special flag <const>FrameSearchFlag::CREATE</const>. |
| The new frame also gets the desired name. |
| </p> |
| |
| @param aTargetFrameName |
| identify |
| <ul><li>(a) a special target ("_blank","_self" ...) or</li> |
| <li>(b) any well known frame</li><ul> |
| to search it inside the current hierarchy |
| |
| @param nSearchFlags |
| optional parameter to regulate search if no special target was used for <var>TargetFrameName</var> |
| |
| @see FrameSearchFlag |
| */ |
| XFrame findFrame( |
| [in] string aTargetFrameName, |
| [in] long nSearchFlags); |
| |
| //------------------------------------------------------------------------- |
| /** determines if the frame is a top frame. |
| |
| <p> |
| In general a top frame is the frame which is a direct child of |
| a task frame or which does not have a parent. Possible frame searches must |
| stop the search at such a frame unless the flag <const>FrameSearchFlag::TASKS</const> |
| is set. |
| </p> |
| |
| @return |
| <TRUE/> if frame supports top frame specification |
| <br> |
| <FALSE/> otherwise |
| */ |
| boolean isTop(); |
| |
| //------------------------------------------------------------------------- |
| /** activates this frame and thus the component within. |
| |
| <p> |
| At first the frame sets itself as the active frame of its |
| creator by calling <member>XFramesSupplier::setActiveFrame()</member>, |
| then it broadcasts an <type>FrameActionEvent</type> with |
| <const>FrameAction::FRAME_ACTIVATED</const>. The component within |
| this frame may listen to this event to grab the focus on activation; |
| for simple components this can be done by the <type>FrameLoader</type>. |
| </p> |
| |
| <p> |
| Finally, most frames may grab the focus to one of its windows |
| or forward the activation to a sub-frame. |
| </p> |
| |
| @see XFrame::deactivate() |
| @see XFrame::isActive() |
| */ |
| [oneway] void activate(); |
| |
| //------------------------------------------------------------------------- |
| /** is called by the creator frame when another sub-frame gets activated. |
| |
| <p> |
| At first the frame deactivates its active sub-frame, if any. |
| Then broadcasts a <type>FrameActionEvent</type> with |
| <const>FrameAction::FRAME_DEACTIVATING</const>. |
| </p> |
| |
| @see XFrame::activate() |
| @see XFrame::isActive() |
| */ |
| [oneway] void deactivate(); |
| |
| //------------------------------------------------------------------------- |
| /** determines if the frame is active. |
| |
| @return |
| <TRUE/> for active or UI active frames |
| <br> |
| <FALSE/> otherwise |
| |
| @see XFrame::activate() |
| @see XFrame::deactivate() |
| */ |
| boolean isActive(); |
| |
| //------------------------------------------------------------------------- |
| /** sets a new component into the frame or release an existing one from a frame. |
| |
| @param xComponentWindow |
| the window of the new component or <NULL/> for release |
| |
| <p> |
| A valid component window should be a child of the frame container window. |
| </p> |
| |
| @param xController |
| the controller of the new component or <NULL/> for release |
| |
| <p> |
| Simple components may implement a <type scope="com::sun::star::awt">XWindow</type> only. |
| In this case no controller must be given here. |
| </p> |
| |
| @return |
| <TRUE/>if setting of new component or release of an existing one was successfully |
| <br> |
| <FALSE/> otherwise (especialy, if an existing controller disagree within his |
| <member>XController::suspend()</member> call) |
| |
| @see XFrame::getComponentWindow() |
| @see XFrame::getContainerWindow() |
| @see XFrame::getController() |
| */ |
| boolean setComponent( |
| [in] com::sun::star::awt::XWindow xComponentWindow, |
| [in] XController xController); |
| |
| //------------------------------------------------------------------------- |
| /** provides access to the component window |
| |
| <p> |
| Note: Don't dispose this window - the frame is the owner of it. |
| </p> |
| |
| @returns |
| the current visible component in this frame |
| <br> |
| or <NULL/> if no one currently exist |
| |
| @see XFrame::setComponent() |
| */ |
| com::sun::star::awt::XWindow getComponentWindow(); |
| |
| //------------------------------------------------------------------------- |
| /** provides access to the controller |
| |
| <p> |
| Note: Don't dispose it - the frame is the owner of it. |
| Use <member>XController::getFrame()</member> to dispose |
| the frame after you the controller agreed with a |
| <member>XController::suspend()</member> call. |
| </p> |
| |
| @returns |
| the current controller within this frame |
| <br> |
| or <NULL/> if no one currently exist |
| |
| @see XFrame::setComponent() |
| */ |
| XController getController(); |
| |
| //------------------------------------------------------------------------- |
| /** notifies the frame that the context of the controller within this |
| frame changed (i.e. the selection). |
| |
| <p> |
| According to a call to this interface, the frame calls |
| <method>XFrameEventListener::frameAction</method> with |
| <const>FrameAction::CONTEXT_CHANGED</const> to all listeners which |
| are registered using <member>XFrame::addFrameActionListener</member>. |
| For external controllers this event can be used to requery dispatches. |
| |
| @see XFrameEventListener |
| @see FrameAction |
| @see XFrame::addFrameActionListener() |
| */ |
| void contextChanged(); |
| |
| //------------------------------------------------------------------------- |
| /** registers an event listener, which will be called when certain things |
| happen to the components within this frame or within sub-frames of this frame. |
| |
| <p> |
| E.g., it is possible to determine instantiation/destruction and |
| activation/deactivation of components. |
| </p> |
| |
| @param xListener |
| specifies the listener which will be informed |
| |
| @see XFrame::removeFrameActionListener() |
| */ |
| [oneway] void addFrameActionListener( [in]XFrameActionListener xListener ); |
| |
| //------------------------------------------------------------------------- |
| /** unregisters an event listener |
| |
| @param xListener |
| specifies the listener which willn't be informed any longer |
| |
| @see XFrame::addFrameActionListener() |
| */ |
| [oneway] void removeFrameActionListener( [in] XFrameActionListener xListener ); |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; |
| |
| #endif |