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 #include <precomp.h>
23*b1cdbd2cSJim Jagielski #include "hfi_service.hxx"
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski // NOT FULLY DEFINED SERVICES
27*b1cdbd2cSJim Jagielski #include <ary/idl/i_ce.hxx>
28*b1cdbd2cSJim Jagielski #include <ary/idl/ik_property.hxx>
29*b1cdbd2cSJim Jagielski #include <ary/idl/ik_service.hxx>
30*b1cdbd2cSJim Jagielski #include <toolkit/hf_docentry.hxx>
31*b1cdbd2cSJim Jagielski #include <toolkit/hf_linachain.hxx>
32*b1cdbd2cSJim Jagielski #include <toolkit/hf_navi_sub.hxx>
33*b1cdbd2cSJim Jagielski #include <toolkit/hf_title.hxx>
34*b1cdbd2cSJim Jagielski #include "hfi_doc.hxx"
35*b1cdbd2cSJim Jagielski #include "hfi_navibar.hxx"
36*b1cdbd2cSJim Jagielski #include "hfi_property.hxx"
37*b1cdbd2cSJim Jagielski #include "hfi_tag.hxx"
38*b1cdbd2cSJim Jagielski #include "hfi_typetext.hxx"
39*b1cdbd2cSJim Jagielski #include "hi_linkhelper.hxx"
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski extern const String
45*b1cdbd2cSJim Jagielski     C_sCePrefix_Service("service");
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski namespace
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski const String
51*b1cdbd2cSJim Jagielski     C_sList_IncludedServices("Services' Summary");
52*b1cdbd2cSJim Jagielski const String
53*b1cdbd2cSJim Jagielski     C_sList_IncludedServices_Heading("Included Services - Summary");
54*b1cdbd2cSJim Jagielski const String
55*b1cdbd2cSJim Jagielski     C_sList_IncludedServices_Label("ServicesSummary");
56*b1cdbd2cSJim Jagielski const String
57*b1cdbd2cSJim Jagielski     C_sList_IncludedServicesDetails("Services' Details");
58*b1cdbd2cSJim Jagielski const String
59*b1cdbd2cSJim Jagielski     C_sList_IncludedServicesDetails_Heading("Included Services - Details");
60*b1cdbd2cSJim Jagielski const String
61*b1cdbd2cSJim Jagielski     C_sList_IncludedServicesDetails_Label("ServicesDetails");
62*b1cdbd2cSJim Jagielski const String
63*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfaces("Interfaces' Summary");
64*b1cdbd2cSJim Jagielski const String
65*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfaces_Heading("Exported Interfaces - Summary");
66*b1cdbd2cSJim Jagielski const String
67*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfaces_Label("InterfacesSummary");
68*b1cdbd2cSJim Jagielski const String
69*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfacesDetails("Interfaces' Details");
70*b1cdbd2cSJim Jagielski const String
71*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfacesDetails_Heading("Exported Interfaces - Details");
72*b1cdbd2cSJim Jagielski const String
73*b1cdbd2cSJim Jagielski     C_sList_ExportedInterfacesDetails_Label("InterfacesDetails");
74*b1cdbd2cSJim Jagielski const String
75*b1cdbd2cSJim Jagielski     C_sList_Properties("Properties' Summary");
76*b1cdbd2cSJim Jagielski const String
77*b1cdbd2cSJim Jagielski     C_sList_Properties_Label("PropertiesSummary");
78*b1cdbd2cSJim Jagielski const String
79*b1cdbd2cSJim Jagielski     C_sList_PropertiesDetails("Properties' Details");
80*b1cdbd2cSJim Jagielski const String
81*b1cdbd2cSJim Jagielski     C_sList_PropertiesDetails_Label("PropertiesDetails");
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski enum E_SubListIndices
85*b1cdbd2cSJim Jagielski {
86*b1cdbd2cSJim Jagielski     sli_IncludedServicesSummary = 0,
87*b1cdbd2cSJim Jagielski     sli_InterfacesSummary = 1,
88*b1cdbd2cSJim Jagielski     sli_PropertiesSummary = 2,
89*b1cdbd2cSJim Jagielski     sli_IncludedServicesDetails = 3,
90*b1cdbd2cSJim Jagielski     sli_InterfacesDetails = 4,
91*b1cdbd2cSJim Jagielski     sli_PropertiesDetails = 5
92*b1cdbd2cSJim Jagielski };
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski } //anonymous namespace
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 
HF_IdlService(Environment & io_rEnv,Xml::Element & o_rOut)97*b1cdbd2cSJim Jagielski HF_IdlService::HF_IdlService( Environment &         io_rEnv,
98*b1cdbd2cSJim Jagielski                               Xml::Element &        o_rOut )
99*b1cdbd2cSJim Jagielski     :   HtmlFactory_Idl(io_rEnv, &o_rOut)
100*b1cdbd2cSJim Jagielski {
101*b1cdbd2cSJim Jagielski }
102*b1cdbd2cSJim Jagielski 
~HF_IdlService()103*b1cdbd2cSJim Jagielski HF_IdlService::~HF_IdlService()
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski }
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski typedef ::ary::idl::ifc_service::attr
109*b1cdbd2cSJim Jagielski     ServiceAttr;
110*b1cdbd2cSJim Jagielski typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedRelation >
111*b1cdbd2cSJim Jagielski     dyn_comref_list;
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski void
produce_CommentedRelations(const client & i_ce,comref_list & it_list,const String & i_summaryTitle,const String & i_summaryLabel,const String & i_detailsTitle,const String & i_detailsLabel,const E_DocType i_docType) const114*b1cdbd2cSJim Jagielski HF_IdlService::produce_CommentedRelations( const client &   i_ce,
115*b1cdbd2cSJim Jagielski                                            comref_list &    it_list,
116*b1cdbd2cSJim Jagielski                                            const String &   i_summaryTitle,
117*b1cdbd2cSJim Jagielski                                            const String &   i_summaryLabel,
118*b1cdbd2cSJim Jagielski                                            const String &   i_detailsTitle,
119*b1cdbd2cSJim Jagielski                                            const String &   i_detailsLabel,
120*b1cdbd2cSJim Jagielski                                            const E_DocType  i_docType ) const
121*b1cdbd2cSJim Jagielski {
122*b1cdbd2cSJim Jagielski     csv_assert( it_list );
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski     bool bSummaryOnly = ( i_docType == doctype_summaryOnly );
125*b1cdbd2cSJim Jagielski     HF_SubTitleTable aTable(
126*b1cdbd2cSJim Jagielski                 CurOut(),
127*b1cdbd2cSJim Jagielski                 bSummaryOnly ? i_summaryLabel : i_detailsLabel,
128*b1cdbd2cSJim Jagielski                 bSummaryOnly ? i_summaryTitle : i_detailsTitle,
129*b1cdbd2cSJim Jagielski                 2 );
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski     for ( ; it_list; ++it_list )
132*b1cdbd2cSJim Jagielski     {
133*b1cdbd2cSJim Jagielski         Xml::Element &
134*b1cdbd2cSJim Jagielski             rRow = aTable.Add_Row();
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski         if ( bSummaryOnly )
137*b1cdbd2cSJim Jagielski         {
138*b1cdbd2cSJim Jagielski             produce_Link(rRow, (*it_list).Type());
139*b1cdbd2cSJim Jagielski             produce_LinkSummary(i_ce, rRow, *it_list);
140*b1cdbd2cSJim Jagielski         }
141*b1cdbd2cSJim Jagielski         else
142*b1cdbd2cSJim Jagielski         {
143*b1cdbd2cSJim Jagielski             HF_IdlCommentedRelationElement
144*b1cdbd2cSJim Jagielski                 aRelation( Env(), aTable, *it_list );
145*b1cdbd2cSJim Jagielski             aRelation.Produce_byData( i_ce );
146*b1cdbd2cSJim Jagielski         }
147*b1cdbd2cSJim Jagielski     }   // end for
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski void
Produce_byData(const client & i_ce) const151*b1cdbd2cSJim Jagielski HF_IdlService::Produce_byData( const client & i_ce ) const
152*b1cdbd2cSJim Jagielski {
153*b1cdbd2cSJim Jagielski     Dyn<HF_NaviSubRow>
154*b1cdbd2cSJim Jagielski         pNaviSubRow( &make_Navibar(i_ce) );
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski     HF_TitleTable
157*b1cdbd2cSJim Jagielski         aTitle(CurOut());
158*b1cdbd2cSJim Jagielski     HF_LinkedNameChain
159*b1cdbd2cSJim Jagielski         aNameChain(aTitle.Add_Row());
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski     aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
162*b1cdbd2cSJim Jagielski     produce_Title(aTitle, C_sCePrefix_Service, i_ce);
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski     write_Docu(aTitle.Add_Row(), i_ce);
165*b1cdbd2cSJim Jagielski     CurOut() << new Html::HorizontalLine();
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski     // produce ...
168*b1cdbd2cSJim Jagielski     // - included services: summary
169*b1cdbd2cSJim Jagielski     dyn_comref_list dpIncludedServices;
170*b1cdbd2cSJim Jagielski     ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
171*b1cdbd2cSJim Jagielski     if ( (*dpIncludedServices).operator bool() )
172*b1cdbd2cSJim Jagielski     {
173*b1cdbd2cSJim Jagielski         produce_CommentedRelations( i_ce, *dpIncludedServices,
174*b1cdbd2cSJim Jagielski                          C_sList_IncludedServices_Heading,
175*b1cdbd2cSJim Jagielski                          C_sList_IncludedServices_Label,
176*b1cdbd2cSJim Jagielski                          C_sList_IncludedServicesDetails_Heading,
177*b1cdbd2cSJim Jagielski                          C_sList_IncludedServicesDetails_Label,
178*b1cdbd2cSJim Jagielski                          doctype_summaryOnly );
179*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_IncludedServicesSummary);
180*b1cdbd2cSJim Jagielski     }
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski     // - exported interfaces: summary
183*b1cdbd2cSJim Jagielski     dyn_comref_list dpExportedInterfaces;
184*b1cdbd2cSJim Jagielski     ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
185*b1cdbd2cSJim Jagielski     if ( (*dpExportedInterfaces).operator bool() )
186*b1cdbd2cSJim Jagielski     {
187*b1cdbd2cSJim Jagielski         produce_CommentedRelations( i_ce, *dpExportedInterfaces,
188*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfaces_Heading,
189*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfaces_Label,
190*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfacesDetails_Heading,
191*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfacesDetails_Label,
192*b1cdbd2cSJim Jagielski                          doctype_summaryOnly );
193*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_InterfacesSummary);
194*b1cdbd2cSJim Jagielski     }
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski     // - supported properties: summary
197*b1cdbd2cSJim Jagielski     dyn_ce_list dpProperties;
198*b1cdbd2cSJim Jagielski     ServiceAttr::Get_Properties(dpProperties, i_ce);
199*b1cdbd2cSJim Jagielski     if ( (*dpProperties).operator bool() )
200*b1cdbd2cSJim Jagielski     {
201*b1cdbd2cSJim Jagielski         produce_Members( *dpProperties,
202*b1cdbd2cSJim Jagielski                          C_sList_Properties,
203*b1cdbd2cSJim Jagielski                          C_sList_Properties_Label,
204*b1cdbd2cSJim Jagielski                          C_sList_PropertiesDetails,
205*b1cdbd2cSJim Jagielski                          C_sList_PropertiesDetails_Label,
206*b1cdbd2cSJim Jagielski                          viewtype_summary );
207*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_PropertiesSummary);
208*b1cdbd2cSJim Jagielski     }
209*b1cdbd2cSJim Jagielski 
210*b1cdbd2cSJim Jagielski     // - included services: details
211*b1cdbd2cSJim Jagielski     ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
212*b1cdbd2cSJim Jagielski     if ( (*dpIncludedServices).operator bool() )
213*b1cdbd2cSJim Jagielski     {
214*b1cdbd2cSJim Jagielski         produce_CommentedRelations( i_ce, *dpIncludedServices,
215*b1cdbd2cSJim Jagielski                          C_sList_IncludedServices_Heading,
216*b1cdbd2cSJim Jagielski                          C_sList_IncludedServices_Label,
217*b1cdbd2cSJim Jagielski                          C_sList_IncludedServicesDetails_Heading,
218*b1cdbd2cSJim Jagielski                          C_sList_IncludedServicesDetails_Label,
219*b1cdbd2cSJim Jagielski                          doctype_complete );
220*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_IncludedServicesDetails);
221*b1cdbd2cSJim Jagielski     }
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski     // - exported interfaces: details
224*b1cdbd2cSJim Jagielski     ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
225*b1cdbd2cSJim Jagielski     if ( (*dpExportedInterfaces).operator bool() )
226*b1cdbd2cSJim Jagielski     {
227*b1cdbd2cSJim Jagielski         produce_CommentedRelations( i_ce, *dpExportedInterfaces,
228*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfaces_Heading,
229*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfaces_Label,
230*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfacesDetails_Heading,
231*b1cdbd2cSJim Jagielski                          C_sList_ExportedInterfacesDetails_Label,
232*b1cdbd2cSJim Jagielski                          doctype_complete );
233*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_InterfacesDetails);
234*b1cdbd2cSJim Jagielski     }
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski     // supported properties: details
237*b1cdbd2cSJim Jagielski     ServiceAttr::Get_Properties(dpProperties, i_ce);
238*b1cdbd2cSJim Jagielski     if ( (*dpProperties).operator bool() )
239*b1cdbd2cSJim Jagielski     {
240*b1cdbd2cSJim Jagielski         produce_Members( *dpProperties,
241*b1cdbd2cSJim Jagielski                          C_sList_Properties,
242*b1cdbd2cSJim Jagielski                          C_sList_Properties_Label,
243*b1cdbd2cSJim Jagielski                          C_sList_PropertiesDetails,
244*b1cdbd2cSJim Jagielski                          C_sList_PropertiesDetails_Label,
245*b1cdbd2cSJim Jagielski                          viewtype_details );
246*b1cdbd2cSJim Jagielski         pNaviSubRow->SwitchOn(sli_PropertiesDetails);
247*b1cdbd2cSJim Jagielski     }
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski     pNaviSubRow->Produce_Row();
250*b1cdbd2cSJim Jagielski     CurOut() << new Xml::XmlCode("<br>&nbsp;");
251*b1cdbd2cSJim Jagielski }
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski typedef ary::idl::ifc_property::attr    PropertyAttr;
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski void
produce_SummaryDeclaration(Xml::Element & o_row,const client & i_property) const256*b1cdbd2cSJim Jagielski HF_IdlService::produce_SummaryDeclaration( Xml::Element &      o_row,
257*b1cdbd2cSJim Jagielski 										   const client &      i_property ) const
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski     // KORR_FUTURE
260*b1cdbd2cSJim Jagielski     // Put this in to HF_IdlProperty!
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski     Xml::Element &
263*b1cdbd2cSJim Jagielski         rCell = o_row
264*b1cdbd2cSJim Jagielski                     >> *new Html::TableCell
265*b1cdbd2cSJim Jagielski                         << new Html::ClassAttr( C_sCellStyle_SummaryLeft );
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski     if (PropertyAttr::HasAnyStereotype(i_property))
268*b1cdbd2cSJim Jagielski     {
269*b1cdbd2cSJim Jagielski         rCell << "[ ";
270*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsReadOnly(i_property))
271*b1cdbd2cSJim Jagielski             rCell << "readonly ";
272*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsBound(i_property))
273*b1cdbd2cSJim Jagielski             rCell << "bound ";
274*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsConstrained(i_property))
275*b1cdbd2cSJim Jagielski             rCell << "constrained ";
276*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsMayBeAmbiguous(i_property))
277*b1cdbd2cSJim Jagielski             rCell << "maybeambiguous ";
278*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsMayBeDefault(i_property))
279*b1cdbd2cSJim Jagielski             rCell << "maybedefault ";
280*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsMayBeVoid(i_property))
281*b1cdbd2cSJim Jagielski             rCell << "maybevoid ";
282*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsRemovable(i_property))
283*b1cdbd2cSJim Jagielski             rCell << "removable ";
284*b1cdbd2cSJim Jagielski         if (PropertyAttr::IsTransient(i_property))
285*b1cdbd2cSJim Jagielski             rCell << "transient ";
286*b1cdbd2cSJim Jagielski         rCell << "] ";
287*b1cdbd2cSJim Jagielski     }   // end if
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski     HF_IdlTypeText
290*b1cdbd2cSJim Jagielski         aType( Env(), rCell, true );
291*b1cdbd2cSJim Jagielski     aType.Produce_byData( PropertyAttr::Type(i_property) );
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski     StreamLock aLocalLink(100);
294*b1cdbd2cSJim Jagielski     aLocalLink() << "#" << i_property.LocalName();
295*b1cdbd2cSJim Jagielski     rCell
296*b1cdbd2cSJim Jagielski         << new Html::LineBreak
297*b1cdbd2cSJim Jagielski         >> *new Html::Link( aLocalLink().c_str() )
298*b1cdbd2cSJim Jagielski             << i_property.LocalName();
299*b1cdbd2cSJim Jagielski }
300*b1cdbd2cSJim Jagielski 
301*b1cdbd2cSJim Jagielski DYN HF_NaviSubRow &
make_Navibar(const client & i_ce) const302*b1cdbd2cSJim Jagielski HF_IdlService::make_Navibar( const client & i_ce ) const
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski     HF_IdlNavigationBar
305*b1cdbd2cSJim Jagielski         aNaviBar(Env(), CurOut());
306*b1cdbd2cSJim Jagielski     aNaviBar.Produce_CeMainRow(i_ce);
307*b1cdbd2cSJim Jagielski 
308*b1cdbd2cSJim Jagielski     DYN HF_NaviSubRow &
309*b1cdbd2cSJim Jagielski         ret = aNaviBar.Add_SubRow();
310*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_IncludedServices, C_sList_IncludedServices_Label, false);
311*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_ExportedInterfaces, C_sList_ExportedInterfaces_Label, false);
312*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_Properties, C_sList_Properties_Label, false);
313*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_IncludedServicesDetails, C_sList_IncludedServicesDetails_Label, false);
314*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_ExportedInterfacesDetails, C_sList_ExportedInterfacesDetails_Label, false);
315*b1cdbd2cSJim Jagielski     ret.AddItem(C_sList_PropertiesDetails, C_sList_PropertiesDetails_Label, false);
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski     CurOut() << new Html::HorizontalLine();
318*b1cdbd2cSJim Jagielski     return ret;
319*b1cdbd2cSJim Jagielski }
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski void
produce_Link(Xml::Element & o_row,type_id i_type) const322*b1cdbd2cSJim Jagielski HF_IdlService::produce_Link( Xml::Element &     o_row,
323*b1cdbd2cSJim Jagielski                              type_id            i_type ) const
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski     Xml::Element &
326*b1cdbd2cSJim Jagielski         rCell = o_row
327*b1cdbd2cSJim Jagielski                 >> *new Html::TableCell
328*b1cdbd2cSJim Jagielski                     << new Html::ClassAttr(C_sCellStyle_SummaryLeft);
329*b1cdbd2cSJim Jagielski     HF_IdlTypeText
330*b1cdbd2cSJim Jagielski         aText(Env(), rCell, true);
331*b1cdbd2cSJim Jagielski     aText.Produce_byData(i_type);
332*b1cdbd2cSJim Jagielski }
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski void
produce_LinkSummary(const client & i_ce,Xml::Element & o_row,const comref & i_commentedRef) const335*b1cdbd2cSJim Jagielski HF_IdlService::produce_LinkSummary( const client &  i_ce,
336*b1cdbd2cSJim Jagielski                                     Xml::Element &  o_row,
337*b1cdbd2cSJim Jagielski                                     const comref &  i_commentedRef ) const
338*b1cdbd2cSJim Jagielski {
339*b1cdbd2cSJim Jagielski     Xml::Element &
340*b1cdbd2cSJim Jagielski         rCell = o_row
341*b1cdbd2cSJim Jagielski                 >> *new Html::TableCell
342*b1cdbd2cSJim Jagielski                     << new Html::ClassAttr(C_sCellStyle_SummaryRight);
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski     HF_IdlCommentedRelationElement::produce_LinkDoc( Env(), i_ce, rCell, i_commentedRef, doctype_summaryOnly );
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski void
produce_MemberDetails(HF_SubTitleTable & o_table,const client & i_ce) const348*b1cdbd2cSJim Jagielski HF_IdlService::produce_MemberDetails( HF_SubTitleTable &  o_table,
349*b1cdbd2cSJim Jagielski                                       const client &      i_ce ) const
350*b1cdbd2cSJim Jagielski {
351*b1cdbd2cSJim Jagielski     HF_IdlProperty
352*b1cdbd2cSJim Jagielski         aProperty( Env(), o_table);
353*b1cdbd2cSJim Jagielski     aProperty.Produce_byData( i_ce );
354*b1cdbd2cSJim Jagielski }
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski 
358