1<?xml version="1.0" encoding="UTF-8"?>
2<!--***********************************************************************
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 *
8 * OpenOffice.org - a multi-platform office productivity suite
9 *
10 * This file is part of OpenOffice.org.
11 *
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
15 *
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
21 *
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org.  If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
26 *
27 ************************************************************************ -->
28<!DOCTYPE oor:component-schema SYSTEM "../../../../component-schema.dtd">
29<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="OptionsDialog" oor:package="org.openoffice.Office" xml:lang="en-US">
30  <info>
31    <author>PB</author>
32    <desc >Contains general structures used to hide a single option or an option
33      tabpage or a whole option group.</desc>
34  </info>
35  <templates>
36    <group oor:name="SingleOption">
37      <info>
38	<desc>Describes one single option.</desc>
39      </info>
40      <prop oor:name="Hide" oor:type="xs:boolean">
41	<info>
42	  <desc>Should this option be hidden?.</desc>
43	</info>
44      </prop>
45    </group>
46    <group oor:name="OptionsPage">
47      <info>
48	<desc>Describes one options tabpage.</desc>
49      </info>
50      <prop oor:name="Hide" oor:type="xs:boolean">
51	<info>
52	  <desc>Should this page be hidden?</desc>
53	</info>
54      </prop>
55      <set oor:name="Options" oor:node-type="SingleOption">
56	<info>
57	  <desc>An optional set to allow to hide single options of this page.</desc>
58	</info>
59      </set>
60    </group>
61    <group oor:name="OptionsGroup">
62      <info>
63	<desc>Describes a group of options tabpages.</desc>
64      </info>
65      <prop oor:name="Hide" oor:type="xs:boolean">
66	<info>
67	  <desc>Should this whole group of options tabpages be hidden?</desc>
68	</info>
69      </prop>
70      <set oor:name="Pages" oor:node-type="OptionsPage">
71	<info>
72	  <desc>An optional set to allow to hide single options tabpages of this
73	    group.</desc>
74	</info>
75      </set>
76    </group>
77
78    <group oor:name="Module">
79      <info>
80	<desc>Defines a Module. The options dialog displays entries in its tree
81	  view only if they are defined to belong to the Module for which the
82	  options dialog is being displayed. The exception is the options dialog
83	  which is invoked from the Extension Manager, where the Module is
84	  irrelevant.</desc>
85      </info>
86      <set oor:name="Nodes" oor:node-type="OrderedNode">
87	<info>
88	  <desc>A set member countains a Node (see type Node) which has been
89	    assigned to this Module. Also entities which do not own the Module
90	    may add members to the set. Please look at the specification for
91	    applying restrictions
92	    (http://specs.openoffice.org/appwide/packagemanager/options_dialog_for_extensions.odt)
93	    The actual Node|s are kept in a separate set (OptionsDialog/Nodes),
94	    to prevent redundancy, because a Node can be assigned to several
95	    Module|s. The position of a node (the tree view element) within the
96	    tree view of the options dialog is determined by the property Index
97	    of each set member. The position can be different dependent on the
98	    Module. Therefore the order is determined per Module. Only the owner
99	    of the Module should set the position (property Index).
100	    The order is undefined if two or more members have the same value for
101	    the Index property.
102	    See also the description for OrderedNode.
103	  </desc>
104	</info>
105      </set>
106    </group>
107
108    <group oor:name="Node">
109      <info>
110	<desc>Defines a node (the tree view element) which can be displayed in
111	  the tree view of the options dialog.</desc>
112      </info>
113      <prop oor:name="Label" oor:type="xs:string" oor:localized="true"
114	    oor:nillable="false">
115	<info>
116	  <desc>The localized name which is displayed next to the node in the
117	    options dialog. If two different nodes (the tree view element) happen
118	    to have the same localized name then both are displayed.</desc>
119	</info>
120      </prop>
121      <prop oor:name="OptionsPage" oor:type="xs:string">
122	<info>
123	  <desc>URL which references the dialog editor resource. This options
124	  page should only contain information for the user and should not
125	  accept input.</desc>
126	</info>
127      </prop>
128      <prop oor:name="AllModules" oor:type="xs:boolean">
129	<info>
130	  <desc>If true then this Node shall be displayed independent of the
131	    Module for which the options dialog is displayed -  that is, always.
132	    In this case it must not be assigned directly to one ore more
133	    Module|s. That is, it must not exist as member in Module/Nodes of no
134	    existing Module.
135	    This is an optimization so that an extension need not provide
136	    entries for all Module|s.
137	    The default value is false.
138	  </desc>
139	</info>
140	<value>false</value>
141      </prop>
142      <prop oor:name="GroupId" oor:type="xs:string">
143	<info>
144	  <desc>Identifies a group of Node|s. All nodes (the tree view elements)
145	    which refer to the same group are displayed next to each other. If
146	    this property is set then GroupIndex must also have a value. The
147	    group will be used by Node|s which have been added to existing
148	    Module|s. If one defines a Module AND Node|s which are used in this
149	    Module, then GroupId must not be set. In this case one uses
150	    Module/Nodes/Index to determine the position of the nodes (the tree
151	    view element).
152	    The empty string is no valid identifier and represents nil.
153	    See also GroupIndex.
154	  </desc>
155	</info>
156	<value></value>
157      </prop>
158      <prop oor:name="GroupIndex" oor:type="xs:int">
159	<info>
160	  <desc>The index of the Node within the group. The index starts with
161	    null. If this property is set then property GroupId must also have
162	    a value. If a Node of this group is displayed depends on the
163	    respective Module to which it is assigned. For example, if there are
164	    the Nodes A(index 0), B (index 1), and C (index 2) in a group,
165	    and B is assigned to a different Module, then only A and
166	    B are displayed together although there indices are 0 and 2 (B has 1).
167	    The value -1 is regarded as nil.
168	    Actually one could have allowed to define a group per Module, so that
169	    the order could be different depending on the Module. But this would
170	    have added more complexity to the data structures.
171	  </desc>
172	</info>
173	<value>-1</value>
174      </prop>
175      <set oor:name="Leaves" oor:node-type="Leaf">
176	<info>
177	  <desc>Leaves which are assigned to this node. Extensions can add to this
178	    set new Leaf|s.</desc>
179	</info>
180      </set>
181    </group>
182
183    <group oor:name="Leaf">
184      <info>
185	<desc>Defines a leaf (the tree view element). A Leaf must be assigned to
186	  exactly one Node. </desc>
187      </info>
188      <prop oor:name="Id" oor:type="xs:string">
189	<info>
190	  <desc>The unique identifier of the Leaf. This must be the extension
191	    identifier if this Leaf was defined by an extension.</desc>
192	</info>
193      </prop>
194      <prop oor:name="Label" oor:type="xs:string" oor:localized="true"
195	    oor:nillable="false">
196	<info>
197	  <desc>The localized name that is displayed for the leaf in the options
198	    dialog.</desc>
199	</info>
200      </prop>
201      <prop oor:name="OptionsPage" oor:type="xs:string" oor:nillable="false">
202	<info>
203	  <desc>A URL which references the window resource.</desc>
204	</info>
205      </prop>
206      <prop oor:name="EventHandlerService" oor:type="xs:string" oor:nillable="false">
207	<info>
208	  <desc>Name of the event handler service which is used as argument in
209	    com.sun.star.awt.XContainerWindowProvider.createContainerWindow. This
210	    handler does not even process events from the options page but also
211	    provides for saving and reading the respective values.</desc>
212	</info>
213      </prop>
214      <prop oor:name="GroupId" oor:type="xs:string">
215	<info>
216	  <desc>Identifies a group of Leaf|s. All Leaf|s which have the same
217	    GroupId form a group and the corresponding entries in the tree view
218	    are displayed next to each other.
219	    If this property is set then the property GroupIndex must
220	    also be set.
221	    The GroupIndex represents the position within the group. If one
222	    owns the Node (e.g. defined it oneself) then one can set the GroupId
223	    to the name of the Node to which this Leaf is assigned. The Leaf|s of
224	    this particular group are displayed first under the node (the tree
225	    view element) before any other groups.
226	    If one does not own the Node then one should not use the Node name as
227	    group id.
228	    The empty string is regarded as nil.
229	  </desc>
230	</info>
231	<value></value>
232      </prop>
233      <prop oor:name="GroupIndex" oor:type="xs:int">
234	<info>
235	  <desc>The index of the Leaf within the group. The index starts with
236	    null. If this property is set then GroupId must also have
237	    a value. If there are two Leaf|s with the same index in the same
238	    group then then their order is undefined.
239	    The value -1 is regarded as nil.</desc>
240	</info>
241	<value>-1</value>
242      </prop>
243    </group>
244
245    <group oor:name="OrderedNode">
246      <info>
247	<desc>Represents a reference to a Node and an optional index.
248	  Instances of this type are used in a set (see Module). The name of the
249	  set member must be the same as the one of the respective Node. The
250	  index determines the position of the node (the tree view element) in
251	  the options dialog for a particular Module.</desc>
252      </info>
253      <prop oor:name="Index" oor:type="xs:int">
254	<info>
255	  <desc>Determines the position of the node in the options dialog.
256	    The index starts with null. That is, the corresponding node
257	    appears at the first position in the tree view of the options dialog.
258	    If the value is -1 then the index is undefined. If one adds
259	    Node|s to a Module which one does not define oneself (e.g. the Module
260	    is owned by someone else), then one must not set the Index. This
261	    applies, for example, to extensions which add their Node|s to existing
262	    Module|s.
263	    The value -1 is regarded as nil.
264	  </desc>
265	</info>
266	<value>-1</value>
267      </prop>
268    </group>
269  </templates>
270
271  <component>
272    <set oor:name="OptionsDialogGroups" oor:node-type="OptionsGroup">
273      <info>
274	<desc>Contains the set of single options, options tabpages and options
275	  groups which should be hidden.</desc>
276	<label>Hidden options</label>
277      </info>
278    </set>
279
280    <set oor:name="Modules" oor:node-type="Module">
281      <info>
282	<desc>List of availabe application contexts</desc>
283      </info>
284    </set>
285    <set oor:name="Nodes" oor:node-type="Node">
286      <info>
287	<desc>List of available nodes.</desc>
288      </info>
289    </set>
290
291  </component>
292</oor:component-schema>
293
294