001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.visualweb.faces.dt_1_2.component;
043:
044: import java.awt.Image;
045: import java.beans.BeanDescriptor;
046: import java.beans.BeanInfo;
047: import java.beans.IntrospectionException;
048: import java.beans.PropertyDescriptor;
049: import java.util.Locale;
050: import java.util.List;
051: import java.util.ArrayList;
052: import java.util.Arrays;
053: import java.util.ResourceBundle;
054:
055: import com.sun.rave.designtime.CategoryDescriptor;
056: import com.sun.rave.designtime.Constants;
057: import com.sun.rave.designtime.faces.FacetDescriptor;
058: import com.sun.rave.designtime.markup.AttributeDescriptor;
059:
060: import org.netbeans.modules.visualweb.faces.dt.HtmlBeanInfoBase;
061: import org.netbeans.modules.visualweb.faces.dt.BeanDescriptorBase;
062: import org.netbeans.modules.visualweb.faces.dt.PropertyDescriptorBase;
063:
064: /**
065: * <p>Auto-generated design time metadata class.
066: * Do <strong>NOT</strong> modify; all changes
067: * <strong>will</strong> be lost!</p>
068: */
069:
070: abstract class UISelectManyBeanInfoBase extends HtmlBeanInfoBase {
071:
072: protected static ResourceBundle resources = ResourceBundle
073: .getBundle(
074: "org.netbeans.modules.visualweb.faces.dt_1_2.component.Bundle-JSF",
075: Locale.getDefault(), UISelectManyBeanInfoBase.class
076: .getClassLoader());
077:
078: /**
079: * <p>Construct a new <code>UISelectManyBeanInfoBase</code>.</p>
080: */
081: public UISelectManyBeanInfoBase() {
082:
083: beanClass = javax.faces.component.UISelectMany.class;
084: iconFileName_C16 = "/org/netbeans/modules/visualweb/faces/dt_1_2/component/UISelectMany_C16";
085: iconFileName_C32 = "/org/netbeans/modules/visualweb/faces/dt_1_2/component/UISelectMany_C32";
086: iconFileName_M16 = "/org/netbeans/modules/visualweb/faces/dt_1_2/component/UISelectMany_M16";
087: iconFileName_M32 = "/org/netbeans/modules/visualweb/faces/dt_1_2/component/UISelectMany_M32";
088:
089: }
090:
091: private BeanDescriptor beanDescriptor;
092:
093: /**
094: * <p>Return the <code>BeanDescriptor</code> for this bean.</p>
095: */
096: public BeanDescriptor getBeanDescriptor() {
097:
098: if (beanDescriptor != null) {
099: return beanDescriptor;
100: }
101:
102: beanDescriptor = new BeanDescriptorBase(beanClass);
103: beanDescriptor.setDisplayName(resources
104: .getString("UISelectMany_DisplayName"));
105: beanDescriptor.setShortDescription(resources
106: .getString("UISelectMany_Description"));
107: beanDescriptor.setExpert(false);
108: beanDescriptor.setHidden(false);
109: beanDescriptor.setPreferred(false);
110: beanDescriptor.setValue(
111: Constants.BeanDescriptor.FACET_DESCRIPTORS,
112: getFacetDescriptors());
113: beanDescriptor.setValue(Constants.BeanDescriptor.HELP_KEY,
114: "projrave_ui_elements_palette_jsfstd_multi_listbox");
115: beanDescriptor.setValue(Constants.BeanDescriptor.INSTANCE_NAME,
116: "multiSelectListbox");
117: beanDescriptor.setValue(Constants.BeanDescriptor.IS_CONTAINER,
118: Boolean.TRUE);
119: beanDescriptor
120: .setValue(Constants.BeanDescriptor.PROPERTIES_HELP_KEY,
121: "projrave_ui_elements_propsheets_jsfstd_multi_listbox_props");
122: beanDescriptor.setValue(
123: Constants.BeanDescriptor.PROPERTY_CATEGORIES,
124: getCategoryDescriptors());
125: beanDescriptor.setValue(Constants.BeanDescriptor.TAG_NAME,
126: "selectManyListbox");
127: beanDescriptor.setValue(Constants.BeanDescriptor.TAGLIB_PREFIX,
128: "h");
129: beanDescriptor.setValue(Constants.BeanDescriptor.TAGLIB_URI,
130: "http://java.sun.com/jsf/html");
131:
132: return beanDescriptor;
133:
134: }
135:
136: /**
137: * <p>Return the <code>CategoryDescriptor</code> array for the property categories of this component.</p>
138: */
139: private CategoryDescriptor[] getCategoryDescriptors() {
140:
141: return com.sun.rave.designtime.base.CategoryDescriptors
142: .getDefaultCategoryDescriptors();
143:
144: }
145:
146: /**
147: * <p>The cached facet descriptors.</p>
148: */
149: protected FacetDescriptor[] facetDescriptors;
150:
151: /**
152: * <p>Return the <code>FacetDescriptor</code>s for this bean.</p>
153: */
154: public FacetDescriptor[] getFacetDescriptors() {
155:
156: if (facetDescriptors != null) {
157: return facetDescriptors;
158: }
159: facetDescriptors = new FacetDescriptor[] {};
160: return facetDescriptors;
161:
162: }
163:
164: /**
165: * <p>Return a class loaded by name via the class loader that loaded this class.</p>
166: */
167:
168: private PropertyDescriptor[] propertyDescriptors;
169:
170: /**
171: * <p>Return the <code>PropertyDescriptor</code>s for this bean.</p>
172: */
173: public PropertyDescriptor[] getPropertyDescriptors() {
174:
175: if (propertyDescriptors != null) {
176: return propertyDescriptors;
177: }
178: AttributeDescriptor attrib = null;
179:
180: try {
181:
182: PropertyDescriptor prop_attributes = new PropertyDescriptorBase(
183: "attributes", beanClass, "getAttributes", null);
184: prop_attributes.setDisplayName(resources
185: .getString("UISelectMany_attributes_DisplayName"));
186: prop_attributes.setShortDescription(resources
187: .getString("UISelectMany_attributes_Description"));
188: prop_attributes.setExpert(false);
189: prop_attributes.setHidden(true);
190: prop_attributes.setPreferred(false);
191: prop_attributes
192: .setValue(
193: Constants.PropertyDescriptor.CATEGORY,
194: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
195:
196: PropertyDescriptor prop_childCount = new PropertyDescriptorBase(
197: "childCount", beanClass, "getChildCount", null);
198: prop_childCount.setDisplayName(resources
199: .getString("UISelectMany_childCount_DisplayName"));
200: prop_childCount.setShortDescription(resources
201: .getString("UISelectMany_childCount_Description"));
202: prop_childCount.setExpert(false);
203: prop_childCount.setHidden(true);
204: prop_childCount.setPreferred(false);
205: prop_childCount
206: .setValue(
207: Constants.PropertyDescriptor.CATEGORY,
208: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
209:
210: PropertyDescriptor prop_children = new PropertyDescriptorBase(
211: "children", beanClass, "getChildren", null);
212: prop_children.setDisplayName(resources
213: .getString("UISelectMany_children_DisplayName"));
214: prop_children.setShortDescription(resources
215: .getString("UISelectMany_children_Description"));
216: prop_children.setExpert(false);
217: prop_children.setHidden(true);
218: prop_children.setPreferred(false);
219: prop_children
220: .setValue(
221: Constants.PropertyDescriptor.CATEGORY,
222: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
223:
224: PropertyDescriptor prop_converter = new PropertyDescriptorBase(
225: "converter", beanClass, "getConverter",
226: "setConverter");
227: prop_converter.setDisplayName(resources
228: .getString("UISelectMany_converter_DisplayName"));
229: prop_converter.setShortDescription(resources
230: .getString("UISelectMany_converter_Description"));
231: prop_converter
232: .setPropertyEditorClass(com.sun.rave.propertyeditors.ConverterPropertyEditor.class);
233: prop_converter.setExpert(false);
234: prop_converter.setHidden(false);
235: prop_converter.setPreferred(false);
236: attrib = new AttributeDescriptor("converter", false, null,
237: true);
238: prop_converter.setValue(
239: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
240: attrib);
241: prop_converter
242: .setValue(
243: Constants.PropertyDescriptor.CATEGORY,
244: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
245:
246: PropertyDescriptor prop_facets = new PropertyDescriptorBase(
247: "facets", beanClass, "getFacets", null);
248: prop_facets.setDisplayName(resources
249: .getString("UISelectMany_facets_DisplayName"));
250: prop_facets.setShortDescription(resources
251: .getString("UISelectMany_facets_Description"));
252: prop_facets.setExpert(false);
253: prop_facets.setHidden(true);
254: prop_facets.setPreferred(false);
255: prop_facets
256: .setValue(
257: Constants.PropertyDescriptor.CATEGORY,
258: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
259:
260: PropertyDescriptor prop_family = new PropertyDescriptorBase(
261: "family", beanClass, "getFamily", null);
262: prop_family.setDisplayName(resources
263: .getString("UISelectMany_family_DisplayName"));
264: prop_family.setShortDescription(resources
265: .getString("UISelectMany_family_Description"));
266: prop_family.setExpert(false);
267: prop_family.setHidden(true);
268: prop_family.setPreferred(false);
269: prop_family
270: .setValue(
271: Constants.PropertyDescriptor.CATEGORY,
272: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
273:
274: PropertyDescriptor prop_id = new PropertyDescriptorBase(
275: "id", beanClass, "getId", "setId");
276: prop_id.setDisplayName(resources
277: .getString("UISelectMany_id_DisplayName"));
278: prop_id.setShortDescription(resources
279: .getString("UISelectMany_id_Description"));
280: prop_id.setExpert(false);
281: prop_id.setHidden(true);
282: prop_id.setPreferred(false);
283: attrib = new AttributeDescriptor("id", false, null, true);
284: prop_id.setValue(
285: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
286: attrib);
287: prop_id
288: .setValue(
289: Constants.PropertyDescriptor.CATEGORY,
290: com.sun.rave.designtime.base.CategoryDescriptors.GENERAL);
291:
292: PropertyDescriptor prop_immediate = new PropertyDescriptorBase(
293: "immediate", beanClass, "isImmediate",
294: "setImmediate");
295: prop_immediate.setDisplayName(resources
296: .getString("UISelectMany_immediate_DisplayName"));
297: prop_immediate.setShortDescription(resources
298: .getString("UISelectMany_immediate_Description"));
299: prop_immediate.setExpert(false);
300: prop_immediate.setHidden(false);
301: prop_immediate.setPreferred(false);
302: attrib = new AttributeDescriptor("immediate", false, null,
303: true);
304: prop_immediate.setValue(
305: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
306: attrib);
307: prop_immediate
308: .setValue(
309: Constants.PropertyDescriptor.CATEGORY,
310: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
311:
312: PropertyDescriptor prop_localValue = new PropertyDescriptorBase(
313: "localValue", beanClass, "getLocalValue", null);
314: prop_localValue.setDisplayName(resources
315: .getString("UISelectMany_localValue_DisplayName"));
316: prop_localValue.setShortDescription(resources
317: .getString("UISelectMany_localValue_Description"));
318: prop_localValue.setExpert(false);
319: prop_localValue.setHidden(true);
320: prop_localValue.setPreferred(false);
321: prop_localValue
322: .setValue(
323: Constants.PropertyDescriptor.CATEGORY,
324: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
325:
326: PropertyDescriptor prop_localValueSet = new PropertyDescriptorBase(
327: "localValueSet", beanClass, "isLocalValueSet",
328: "setLocalValueSet");
329: prop_localValueSet
330: .setDisplayName(resources
331: .getString("UISelectMany_localValueSet_DisplayName"));
332: prop_localValueSet
333: .setShortDescription(resources
334: .getString("UISelectMany_localValueSet_Description"));
335: prop_localValueSet.setExpert(false);
336: prop_localValueSet.setHidden(true);
337: prop_localValueSet.setPreferred(false);
338: prop_localValueSet
339: .setValue(
340: Constants.PropertyDescriptor.CATEGORY,
341: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
342:
343: PropertyDescriptor prop_parent = new PropertyDescriptorBase(
344: "parent", beanClass, "getParent", null);
345: prop_parent.setDisplayName(resources
346: .getString("UISelectMany_parent_DisplayName"));
347: prop_parent.setShortDescription(resources
348: .getString("UISelectMany_parent_Description"));
349: prop_parent.setExpert(false);
350: prop_parent.setHidden(true);
351: prop_parent.setPreferred(false);
352: prop_parent
353: .setValue(
354: Constants.PropertyDescriptor.CATEGORY,
355: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
356:
357: PropertyDescriptor prop_rendered = new PropertyDescriptorBase(
358: "rendered", beanClass, "isRendered", "setRendered");
359: prop_rendered.setDisplayName(resources
360: .getString("UISelectMany_rendered_DisplayName"));
361: prop_rendered.setShortDescription(resources
362: .getString("UISelectMany_rendered_Description"));
363: prop_rendered.setExpert(false);
364: prop_rendered.setHidden(false);
365: prop_rendered.setPreferred(false);
366: attrib = new AttributeDescriptor("rendered", false, null,
367: true);
368: prop_rendered.setValue(
369: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
370: attrib);
371: prop_rendered
372: .setValue(
373: Constants.PropertyDescriptor.CATEGORY,
374: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
375:
376: PropertyDescriptor prop_rendererType = new PropertyDescriptorBase(
377: "rendererType", beanClass, "getRendererType",
378: "setRendererType");
379: prop_rendererType
380: .setDisplayName(resources
381: .getString("UISelectMany_rendererType_DisplayName"));
382: prop_rendererType
383: .setShortDescription(resources
384: .getString("UISelectMany_rendererType_Description"));
385: prop_rendererType.setExpert(false);
386: prop_rendererType.setHidden(true);
387: prop_rendererType.setPreferred(false);
388: prop_rendererType
389: .setValue(
390: Constants.PropertyDescriptor.CATEGORY,
391: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
392:
393: PropertyDescriptor prop_rendersChildren = new PropertyDescriptorBase(
394: "rendersChildren", beanClass, "getRendersChildren",
395: null);
396: prop_rendersChildren
397: .setDisplayName(resources
398: .getString("UISelectMany_rendersChildren_DisplayName"));
399: prop_rendersChildren
400: .setShortDescription(resources
401: .getString("UISelectMany_rendersChildren_Description"));
402: prop_rendersChildren.setExpert(false);
403: prop_rendersChildren.setHidden(true);
404: prop_rendersChildren.setPreferred(false);
405: prop_rendersChildren
406: .setValue(
407: Constants.PropertyDescriptor.CATEGORY,
408: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
409:
410: PropertyDescriptor prop_required = new PropertyDescriptorBase(
411: "required", beanClass, "isRequired", "setRequired");
412: prop_required.setDisplayName(resources
413: .getString("UISelectMany_required_DisplayName"));
414: prop_required.setShortDescription(resources
415: .getString("UISelectMany_required_Description"));
416: prop_required.setExpert(false);
417: prop_required.setHidden(false);
418: prop_required.setPreferred(false);
419: attrib = new AttributeDescriptor("required", false, null,
420: true);
421: prop_required.setValue(
422: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
423: attrib);
424: prop_required
425: .setValue(
426: Constants.PropertyDescriptor.CATEGORY,
427: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
428:
429: PropertyDescriptor prop_selectedValues = new PropertyDescriptorBase(
430: "selectedValues", beanClass, "getSelectedValues",
431: "setSelectedValues");
432: prop_selectedValues
433: .setDisplayName(resources
434: .getString("UISelectMany_selectedValues_DisplayName"));
435: prop_selectedValues
436: .setShortDescription(resources
437: .getString("UISelectMany_selectedValues_Description"));
438: prop_selectedValues.setExpert(false);
439: prop_selectedValues.setHidden(false);
440: prop_selectedValues.setPreferred(false);
441: prop_selectedValues
442: .setValue(
443: Constants.PropertyDescriptor.CATEGORY,
444: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
445:
446: PropertyDescriptor prop_submittedValue = new PropertyDescriptorBase(
447: "submittedValue", beanClass, "getSubmittedValue",
448: "setSubmittedValue");
449: prop_submittedValue
450: .setDisplayName(resources
451: .getString("UISelectMany_submittedValue_DisplayName"));
452: prop_submittedValue
453: .setShortDescription(resources
454: .getString("UISelectMany_submittedValue_Description"));
455: prop_submittedValue.setExpert(false);
456: prop_submittedValue.setHidden(true);
457: prop_submittedValue.setPreferred(false);
458: prop_submittedValue
459: .setValue(
460: Constants.PropertyDescriptor.CATEGORY,
461: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
462:
463: PropertyDescriptor prop_validator = new PropertyDescriptorBase(
464: "validator", beanClass, "getValidator",
465: "setValidator");
466: prop_validator.setDisplayName(resources
467: .getString("UISelectMany_validator_DisplayName"));
468: prop_validator.setShortDescription(resources
469: .getString("UISelectMany_validator_Description"));
470: prop_validator
471: .setPropertyEditorClass(com.sun.rave.propertyeditors.ValidatorPropertyEditor.class);
472: prop_validator.setExpert(false);
473: prop_validator.setHidden(false);
474: prop_validator.setPreferred(false);
475: attrib = new AttributeDescriptor("validator", false, null,
476: true);
477: prop_validator.setValue(
478: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
479: attrib);
480: prop_validator
481: .setValue(
482: Constants.PropertyDescriptor.CATEGORY,
483: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
484:
485: PropertyDescriptor prop_value = new PropertyDescriptorBase(
486: "value", beanClass, "getValue", "setValue");
487: prop_value.setDisplayName(resources
488: .getString("UISelectMany_value_DisplayName"));
489: prop_value.setShortDescription(resources
490: .getString("UISelectMany_value_Description"));
491: prop_value
492: .setPropertyEditorClass(org.netbeans.modules.visualweb.faces.dt.std.ValueBindingPropertyEditor.class);
493: prop_value.setExpert(false);
494: prop_value.setHidden(false);
495: prop_value.setPreferred(false);
496: attrib = new AttributeDescriptor("value", false, null, true);
497: prop_value.setValue(
498: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
499: attrib);
500: prop_value
501: .setValue(
502: Constants.PropertyDescriptor.CATEGORY,
503: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
504: prop_value.setValue("ignoreIsBound", "true");
505:
506: PropertyDescriptor prop_valueChangeListener = new PropertyDescriptorBase(
507: "valueChangeListener", beanClass,
508: "getValueChangeListener", "setValueChangeListener");
509: prop_valueChangeListener
510: .setDisplayName(resources
511: .getString("UISelectMany_valueChangeListener_DisplayName"));
512: prop_valueChangeListener
513: .setShortDescription(resources
514: .getString("UISelectMany_valueChangeListener_Description"));
515: prop_valueChangeListener
516: .setPropertyEditorClass(com.sun.rave.propertyeditors.MethodBindingPropertyEditor.class);
517: prop_valueChangeListener.setExpert(false);
518: prop_valueChangeListener.setHidden(false);
519: prop_valueChangeListener.setPreferred(false);
520: attrib = new AttributeDescriptor("valueChangeListener",
521: false, null, true);
522: prop_valueChangeListener.setValue(
523: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
524: attrib);
525: prop_valueChangeListener
526: .setValue(
527: Constants.PropertyDescriptor.CATEGORY,
528: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
529:
530: List<PropertyDescriptor> propertyDescriptorList = new ArrayList<PropertyDescriptor>();
531: propertyDescriptorList.add(prop_attributes);
532: propertyDescriptorList.add(prop_childCount);
533: propertyDescriptorList.add(prop_children);
534: propertyDescriptorList.add(prop_converter);
535: propertyDescriptorList.add(prop_facets);
536: propertyDescriptorList.add(prop_family);
537: propertyDescriptorList.add(prop_id);
538: propertyDescriptorList.add(prop_immediate);
539: propertyDescriptorList.add(prop_localValue);
540: propertyDescriptorList.add(prop_localValueSet);
541: propertyDescriptorList.add(prop_parent);
542: propertyDescriptorList.add(prop_rendered);
543: propertyDescriptorList.add(prop_rendererType);
544: propertyDescriptorList.add(prop_rendersChildren);
545: propertyDescriptorList.add(prop_required);
546: propertyDescriptorList.add(prop_selectedValues);
547: propertyDescriptorList.add(prop_submittedValue);
548: propertyDescriptorList.add(prop_validator);
549: propertyDescriptorList.add(prop_value);
550: propertyDescriptorList.add(prop_valueChangeListener);
551:
552: propertyDescriptorList.addAll(Arrays.asList(super
553: .getPropertyDescriptors()));
554: propertyDescriptors = propertyDescriptorList
555: .toArray(new PropertyDescriptor[propertyDescriptorList
556: .size()]);
557: return propertyDescriptors;
558:
559: } catch (IntrospectionException e) {
560: e.printStackTrace();
561: return null;
562: }
563:
564: }
565:
566: }
|