1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 #include <precomp.h> 23 #include "hfi_linklist.hxx" 24 25 26 // NOT FULLY DEFINED SERVICES 27 #include <ary/idl/i_ce.hxx> 28 #include <ary/idl/i_gate.hxx> 29 #include <ary/idl/ip_ce.hxx> 30 #include <ary/idl/ip_type.hxx> 31 #include <toolkit/hf_docentry.hxx> 32 #include <toolkit/hf_title.hxx> 33 #include "hfi_doc.hxx" 34 #include "hfi_tag.hxx" 35 #include "hfi_typetext.hxx" 36 #include "hi_ary.hxx" 37 #include "hi_env.hxx" 38 39 40 41 42 //******************* HF_CommentedLink_Table **********************************// 43 44 HF_CommentedLink_Table::HF_CommentedLink_Table( Environment & io_rEnv, 45 Xml::Element & o_rOut, 46 const String & i_sTitle, 47 const String & i_sLabel, 48 bool i_bBorder ) 49 : HtmlFactory_Idl(io_rEnv,&o_rOut), 50 pTable( new Html::Table( (i_bBorder ? "1" : "0"), "100%", "5", "0") ), 51 pCurLinkColumn(0), 52 pCurCommentColumn(0) 53 { 54 *pTable 55 << new Html::ClassAttr("commentedlinks"); 56 57 CurOut() 58 >> *new Html::Label(i_sLabel) 59 << new Html::LineBreak; 60 CurOut() 61 << pTable; 62 // HF_SubTitle aTitle(*pTable); 63 // aTitle.Produce_it(i_sTitle); 64 } 65 66 HF_CommentedLink_Table::~HF_CommentedLink_Table() 67 { 68 } 69 70 void 71 HF_CommentedLink_Table::Add_Line() 72 { 73 Html::TableRow & 74 rRow = pTable->AddRow(); 75 76 pCurLinkColumn = & (rRow.AddCell() 77 << new Html::WidthAttr("30%") 78 << new Xml::AnAttribute("valign","top") ); 79 pCurCommentColumn = & rRow.AddCell(); 80 } 81 82 Xml::Element & 83 HF_CommentedLink_Table::Cur_LinkColumn() 84 { 85 csv_assert(pCurLinkColumn != 0); 86 return *pCurLinkColumn; 87 } 88 89 Xml::Element & 90 HF_CommentedLink_Table::Cur_CommentColumn() 91 { 92 csv_assert(pCurCommentColumn != 0); 93 return *pCurCommentColumn; 94 } 95 96 97 //******************* HF_MemberTable **********************************// 98 99 HF_MemberTable::HF_MemberTable( Environment & io_rEnv, 100 Xml::Element & o_rOut, 101 const String & i_sTitle, 102 const String & i_sLabel, 103 bool i_bInline ) 104 : HtmlFactory_Idl(io_rEnv,&o_rOut), 105 pTable( new Html::Table("1", "100%", "5", "0") ), 106 pCurDeclaration(0), 107 pCurDescription(0), 108 bInline(i_bInline) 109 { 110 *pTable 111 << new Html::ClassAttr("memberlist"); 112 113 CurOut() 114 >> *new Html::Label(i_sLabel) 115 << new Html::LineBreak; 116 CurOut() 117 << pTable; 118 // HF_SubTitle aTitle(*pTable); 119 // aTitle.Produce_it(i_sTitle); 120 } 121 122 HF_MemberTable::~HF_MemberTable() 123 { 124 } 125 126 void 127 HF_MemberTable::Add_Line() 128 { 129 if (bInline) 130 { 131 Html::TableRow & rRow = pTable->AddRow(); 132 133 pCurDeclaration = &( rRow.AddCell() 134 << new Xml::AnAttribute("valign","top") 135 << new Html::WidthAttr("30%") ); 136 pCurDescription = & rRow.AddCell(); 137 } 138 else 139 { 140 Html::DefList * 141 pMemberSpace = new Html::DefList; 142 *pMemberSpace 143 << new Html::ClassAttr("member"); 144 145 pTable->AddRow().AddCell() << pMemberSpace; 146 147 pCurDeclaration = 148 & ( *pMemberSpace 149 >> *new Html::DefListTerm 150 << new Html::ClassAttr("member") ); 151 pCurDescription = 152 & ( *pMemberSpace 153 >> *new Html::DefListDefinition() 154 << new Html::ClassAttr("member") ); 155 } 156 } 157 158 Xml::Element & 159 HF_MemberTable::Cur_Declaration() 160 { 161 csv_assert(pCurDeclaration != 0); 162 return *pCurDeclaration; 163 } 164 165 Xml::Element & 166 HF_MemberTable::Cur_Description() 167 { 168 csv_assert(pCurDescription != 0); 169 return *pCurDescription; 170 } 171 172 173 174 //******************* HF_IdlLinkList **********************************// 175 176 HF_IdlLinkList::HF_IdlLinkList( Environment & io_rEnv, 177 Xml::Element * o_pOut ) 178 : HtmlFactory_Idl(io_rEnv,o_pOut) 179 { 180 } 181 182 HF_IdlLinkList::~HF_IdlLinkList() 183 { 184 } 185 186 void 187 HF_IdlLinkList::Produce_NamespaceMembers( const String & i_sTitle, 188 const String & i_sLabel, 189 const std::vector<ary::idl::Ce_id> & i_rList, 190 bool i_bNestedNamespaces ) const 191 { 192 HF_CommentedLink_Table 193 aTableMaker( Env(), CurOut(), 194 i_sTitle, i_sLabel, 195 true ); 196 197 std::vector<ary::idl::Ce_id>::const_iterator itEnd = i_rList.end(); 198 for ( std::vector<ary::idl::Ce_id>::const_iterator it = i_rList.begin(); 199 it != itEnd; 200 ++it ) 201 { 202 static String sEntryName; 203 static String sEntryLink; 204 const ce_info * 205 pDocu = 0; 206 Get_EntryData_NamespaceMembers( sEntryName, sEntryLink, pDocu, *it, i_bNestedNamespaces ); 207 aTableMaker.Add_Line(); 208 209 aTableMaker.Cur_LinkColumn() 210 >> *new Html::Link(sEntryLink) 211 << sEntryName; 212 213 if ( pDocu != 0 ) 214 { 215 HF_IdlShortDocu 216 aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); 217 aTextDisplay.Produce_byData( pDocu ); 218 } 219 } // end for 220 } 221 222 void 223 HF_IdlLinkList::Produce_GlobalLinks( const String & i_sTitle, 224 const String & i_sLabel, 225 ce_list & i_rList ) const 226 { 227 HF_CommentedLink_Table 228 aTableMaker( Env(), CurOut(), 229 i_sTitle, i_sLabel, 230 true ); 231 232 for ( ; i_rList; ++i_rList ) 233 { 234 aTableMaker.Add_Line(); 235 HF_IdlTypeText 236 aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true ); 237 aLinkText.Produce_byData(*i_rList); 238 239 const ce_info * 240 pDocu = Get_EntryDocu(*i_rList); 241 if ( pDocu != 0 ) 242 { 243 HF_IdlShortDocu 244 aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); 245 aTextDisplay.Produce_byData( pDocu, *i_rList ); 246 } 247 } 248 } 249 250 void 251 HF_IdlLinkList::Produce_GlobalCommentedLinks( const String & i_sTitle, 252 const String & i_sLabel, 253 comref_list & i_rList ) const 254 { 255 HF_CommentedLink_Table 256 aTableMaker( Env(), CurOut(), 257 i_sTitle, i_sLabel, 258 true ); 259 /* 260 for ( ; i_rList; ++i_rList ) 261 { 262 aTableMaker.Add_Line(); 263 HF_IdlTypeText 264 aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true ); 265 aLinkText.Produce_byData( (*i_rList).first ); 266 267 HF_DocEntryList 268 aDocList( aTableMaker.Cur_CommentColumn() ); 269 if ( (*i_rList).second != 0 ) 270 { 271 HF_IdlDocu 272 aDocuDisplay( Env(), aDocList ); 273 aDocuDisplay.Produce_byData( (*i_rList).second ); 274 } 275 else 276 { 277 const ce_info * 278 pShort = Get_EntryDocu( 279 Env().Gate().Types().Search_CeRelatedTo( 280 (*i_rList).first) ); 281 if ( pShort != 0 ) 282 { 283 if (pShort->IsDeprecated()) 284 { 285 aDocList.Produce_Term() 286 << "[ DEPRECATED ]"; 287 } 288 if (pShort->IsOptional()) 289 { 290 aDocList.Produce_Term() 291 << "[ OPTIONAL ]"; 292 } 293 294 aDocList.Produce_Term() 295 << "Description"; 296 297 HF_IdlDocuTextDisplay 298 aShortDisplay( Env(), &aDocList.Produce_Definition() ); 299 aShortDisplay.Set_CurScopeTo( 300 Env().Gate().Types().Search_CeRelatedTo((*i_rList).first) ); 301 pShort->Short().DisplayAt(aShortDisplay); 302 } 303 } 304 } 305 */ 306 } 307 308 void 309 HF_IdlLinkList::Produce_MemberLinks( const String & i_sTitle, 310 const String & i_sLabel, 311 ce_list & i_rList ) const 312 { 313 HF_CommentedLink_Table 314 aTableMaker( Env(), CurOut(), 315 i_sTitle, i_sLabel, 316 true ); 317 318 /* 319 for ( ; i_rList; ++i_rList ) 320 { 321 const ary::idl::CodeEntity & 322 rCe = Env().Gate().Ces().Find_Ce(*i_rList); 323 324 aTableMaker.Add_Line(); 325 aTableMaker.Cur_LinkColumn() 326 >> *new Html::Link( 327 StreamLock(200)() << "#" << rCe.LocalName() << c_str) 328 << rCe.LocalName(); 329 330 const ce_info * 331 pDocu = rCe.Docu(); 332 if ( pDocu != 0 ) 333 { 334 HF_IdlShortDocu 335 aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); 336 aTextDisplay.Produce_byData( *pDocu ); 337 } 338 } // end for 339 */ 340 } 341 342 void 343 HF_IdlLinkList::Get_EntryData_NamespaceMembers( 344 String & o_sEntryName, 345 String & o_sEntryLink, 346 const ce_info * & o_pDocu, 347 ce_id i_nMemberId, 348 bool i_bIsNestedNamespace ) const 349 { 350 const ary::idl::CodeEntity & 351 rCe = Env().Data().Find_Ce(i_nMemberId); 352 353 o_sEntryName = rCe.LocalName(); 354 o_sEntryLink = StreamLock(200)() << rCe.LocalName() 355 << ( i_bIsNestedNamespace 356 ? "/module-ix" 357 : "" ) 358 << ".html" 359 << c_str; 360 o_pDocu = rCe.Docu(); 361 } 362 363 const ary::doc::OldIdlDocu * 364 HF_IdlLinkList::Get_EntryDocu(ce_id i_nMemberId) const 365 { 366 if (i_nMemberId.IsValid()) 367 return Env().Data().Find_Ce(i_nMemberId).Docu(); 368 else 369 return 0; 370 } 371 372 373