1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_XLinkageSupport_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_embed_XLinkageSupport_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_XStorage_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/embed/XStorage.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_XCommonEmbedPersist_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/embed/XCommonEmbedPersist.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_WrongStateException_idl__
43*b1cdbd2cSJim Jagielski#include <com/sun/star/embed/WrongStateException.idl>
44*b1cdbd2cSJim Jagielski#endif
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski//============================================================================
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module embed {
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski//============================================================================
51*b1cdbd2cSJim Jagielski/** specifies an additional implementation for linked embedded object support.
52*b1cdbd2cSJim Jagielski */
53*b1cdbd2cSJim Jagielskipublished interface XLinkageSupport: XCommonEmbedPersist
54*b1cdbd2cSJim Jagielski{
55*b1cdbd2cSJim Jagielski	//------------------------------------------------------------------------
56*b1cdbd2cSJim Jagielski    /** breaks the link and provides the object with a parent storage and a
57*b1cdbd2cSJim Jagielski		name for object's entry
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski		<p>
60*b1cdbd2cSJim Jagielski		This method can be used only for links implementations that implement
61*b1cdbd2cSJim Jagielski		the whole set of embedded object interfaces. Usually the sets of
62*b1cdbd2cSJim Jagielski		interfaces are the same for links and objects. An example of exception
63*b1cdbd2cSJim Jagielski		from this are OpenOffice links that do not implement
64*b1cdbd2cSJim Jagielski		<type>XEmbedPersist</type> interface. For such cases the method will
65*b1cdbd2cSJim Jagielski		throw an exception.
66*b1cdbd2cSJim Jagielski		</p>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski		<p>
69*b1cdbd2cSJim Jagielski		The link will be broken and the linked object will become a normal
70*b1cdbd2cSJim Jagielski		embedded object.
71*b1cdbd2cSJim Jagielski		</p>
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski		<p>
74*b1cdbd2cSJim Jagielski		An entry with the specified name should be created\opened inside
75*b1cdbd2cSJim Jagielski		provided storage. This entry will be used for the object persistence.
76*b1cdbd2cSJim Jagielski		If the entry exists already all it's contents will be ignored.
77*b1cdbd2cSJim Jagielski		</p>
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski		@param xStorage
80*b1cdbd2cSJim Jagielski			a parent storage the entry should be created\opened in
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski		@param sEntryName
83*b1cdbd2cSJim Jagielski			a name for the entry
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski		@throws ::com::sun::star::lang::IllegalArgumentException
86*b1cdbd2cSJim Jagielski			one of arguments is illegal
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski        @throws com::sun::star::embed::WrongStateException
89*b1cdbd2cSJim Jagielski			the object is in wrong state or not a linked object
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski        @throws com::sun::star::io::IOException
92*b1cdbd2cSJim Jagielski			in case object has not persistence or other io problems
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski        @throws com::sun::star::uno::Exception
95*b1cdbd2cSJim Jagielski			in case of other problems
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski		@see also XEmbedPersist::setPersistentEntry
98*b1cdbd2cSJim Jagielski	 */
99*b1cdbd2cSJim Jagielski	void breakLink( [in] ::com::sun::star::embed::XStorage xStorage,
100*b1cdbd2cSJim Jagielski					[in] string sEntryName )
101*b1cdbd2cSJim Jagielski		raises( ::com::sun::star::lang::IllegalArgumentException,
102*b1cdbd2cSJim Jagielski				::com::sun::star::embed::WrongStateException,
103*b1cdbd2cSJim Jagielski				::com::sun::star::io::IOException,
104*b1cdbd2cSJim Jagielski				::com::sun::star::uno::Exception );
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski	//------------------------------------------------------------------------
108*b1cdbd2cSJim Jagielski    /** allows to detect whether the object is a linked one.
109*b1cdbd2cSJim Jagielski		<p>
110*b1cdbd2cSJim Jagielski			Most of embedded objects will not support this interface, but some
111*b1cdbd2cSJim Jagielski		of them can do it, to allow conversion from link to object. After
112*b1cdbd2cSJim Jagielski		the conversion the object does not change, so interface set staies the
113*b1cdbd2cSJim Jagielski		same, but the object is not a link any more.
114*b1cdbd2cSJim Jagielski		</p>
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski		@return
117*b1cdbd2cSJim Jagielski			<TRUE/> - the object is a linked one.
118*b1cdbd2cSJim Jagielski			<FALSE/> - otherwise
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski        @throws com::sun::star::embed::WrongStateException
121*b1cdbd2cSJim Jagielski			the object is in wrong state
122*b1cdbd2cSJim Jagielski	 */
123*b1cdbd2cSJim Jagielski	boolean isLink()
124*b1cdbd2cSJim Jagielski		raises( ::com::sun::star::embed::WrongStateException );
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski	//------------------------------------------------------------------------
127*b1cdbd2cSJim Jagielski    /** returns the URL of the link object.
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski        @throws com::sun::star::embed::WrongStateException
130*b1cdbd2cSJim Jagielski			the object is in wrong state or is not a link
131*b1cdbd2cSJim Jagielski	 */
132*b1cdbd2cSJim Jagielski	string getLinkURL()
133*b1cdbd2cSJim Jagielski		raises( ::com::sun::star::embed::WrongStateException,
134*b1cdbd2cSJim Jagielski				::com::sun::star::uno::Exception );
135*b1cdbd2cSJim Jagielski};
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski//============================================================================
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski}; }; }; };
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski#endif
142*b1cdbd2cSJim Jagielski
143